BlueAce schreef op vrijdag 20 mei 2005 @ 20:58:
[...]
Ik heb echt alles geprobeerd nu, maar dat is de enige variabele waar ik mee kan werken. Ik heb ergens wel eens gehoord dat hij vervalst kan worden, dus daarom ben ik het met je eens, maar nu twijfel ik toch. Is het zo dat ik HTTP_REFERER kan veranderen, zodat het net lijkt alsof het script wordt geinclude vanaf
www.gooddomain.com, maar eigenlijk staat het op
www.evildomain.com? Nee toch? Als je het script direct aanroept kun je er niks mee, dan krijg je gewoon plain-text voorgeschoteld.
Ja, dat kan.. niet direct, maar wel indirect. Als ik op
evildomain.com doe:
PHP:
1
| <script src="fetch.php?url=http://www.domein.nl/script.php" type="text/javascript"></script> |
en mijn
fetch.php speelt proxy, en vervangt de refferer header, dan kan dat..
Overigens is die refferer header wel de enige oplossing, dus je moet maar accepteren dat er gecheat kan worden..
Wil je het toch veilig, dan kost dat wat meer moeite voor de domeinen waarop/aan jij het script aanbied. Wat wel zou werken is:
- maak een script wat een random id genereerd
- geef gooddomain een id en password waarmee hij op jou server dat id kan aanvragen
- in he script waarin je het random id genereerd sla je nu op dat id x bij domain y hoort
- laat gooddomain script opvragen en het id meesturen
http://www.domein.nl/script.php?id=gegevenid
- zorg ervoor dat dit id slechts 1 maal te gebruiken is, en na een korte tijd niet meer geldig is
- in script.php kijk je nu naar het id, kijk je bij welke site dit id hoort, controleerd de refferet nog eens met ditdomein en doe je je ding.
Let wel op: er is ook software (nav geloof ik) welke de refferer uit de headers haalt...
Nu ik erover nadenk, dit is nog niet veilig...
als evildomain zijnde request ik nu eerst de pagina op gooddomain, haal het id uit de html zooi, en vervolgels doe ik mijn proxy truukje weer, en geef jou id door..
Op evildomain krijg ik nu wel het script dat bedoelt was voor gooddomain, maar ik kan nog wel knoeien dus..
Tenzij je gooddomain het script niet op een publiekelijk toegankelijke plaats neerzet zal evilsite er op de een of andere manier altijd bij kunnen komen. Het enige wat echt veilig is, is dit niet clientside af te handelen, maar volledig serverside.
edit:
En ook laten registreren zal dus niet veel helpen, omdatevil domein het script dan nog steeds van gooddomain of kan halen
[
Voor 6% gewijzigd door
Norjee op 20-05-2005 21:31
]