Hallo,
Afgelopen nacht zijn al mijn php script door een hacker veranderd. In elk script was onderaan een javascript toegevoegd met daarin een iframe.
Ik heb de helpdesk gebeld met de vraag hoe dat kon.
Volgens de helpdesk zou ik mijn scripts moeten beveiligen.
Oke, maar hoe??
Hoe is het mogelijk dat een of andere Rus of diens computer mijn php bestanden kan overschrijven?
Inmiddels al mijn wachtwoorden veranderd, ftp en sql, maar is dat afdoende?
Volgens de hoster is er geen gebruik gemaakt van ftp.
mijn vraag: hoe kan ik dit in de toekomst voorkomen?
Oke, waaruit maak je op dat ik niet weet hoe ik script?
een script van mij die bijvoorbeeld alleen bestaat uit het volgende, zou ik niet weten hoe ik het moet beveiligen en toch was deze herschreven...

<?php
if (empty($webkleur)){
echo ' <center> U bent vergeten een kleur te selecteren<br>Daarom maken we voor u een standaard website in de saaie kleur wit...<br> u kunt nog terug door binnen 5 seconden op terug te klikken!<br><br><form>
<input type="button" value="Ga terug" onclick="history.back()" />
</form>
';
$webkleur = 'wit';
}

if (empty($naambezoeker)){
echo ' <br><br><br><center> U bent vergeten uw naam in te vullen<br><br>
Klik op terug anders gaat u binnen 5 seconden verder op deze site zonder naam...<br><br><br>
<form>
<input type="button" value="Ga terug" onclick="history.back()" />
</form>';

}

echo "$naambezoeker, </br>" ;
echo "we gaan nu speciaal voor u een website bouwen in de kleur $webkleur </br> </br>" ;
echo' Een klein momentje...</br>
<img src="loading.gif" >

</form>
</td> ';
?>
Waar komt $webkleur vandaan? $_POST?
Uit het volgende script:
<?php



$tijd = date("G");
echo '<BODY BGCOLOR="Skyblue"><center><FORM ACTION="kleurinstellen.php">
<big><br><br>';
if($tijd < 6) { echo 'Goede nacht'; }
elseif($tijd < 12) { echo "Goedemorgen!"; }
elseif($tijd < 18) { echo "Goedemiddag!"; }
else { echo "Goede avond"; }

echo ' en welkom op wesleymessing.nl!</big><br><br>Graag willen we van u weten welke kleur u het mooist vindt.
<br><br>
<font color= "navy"><INPUT TYPE=RADIO NAME="webkleur" VALUE="blauw">Blauw<BR></font>
<font color= "green"><INPUT TYPE=RADIO NAME="webkleur" VALUE="groen">Groen<BR></font>
<font color= "red"><INPUT TYPE=RADIO NAME="webkleur" VALUE="rood">Rood<BR></font>
<font color= "yellow"><INPUT TYPE=RADIO NAME="webkleur" VALUE="geel">Geel<BR></font>
<font color= "purple"><INPUT TYPE=RADIO NAME="webkleur" VALUE="paars">Paars<BR></font>
Graag ook even uw naam hier invullen<br><br>
<input type="text" name="naambezoeker" value= "'.$naambezoeker.'" size="30" maxlength="50">
<br><br>
<INPUT TYPE=SUBMIT VALUE="Ga verder">
</FORM>

</center></BODY>';
?>
Is het geen mogelijkheid om je scripts te beveiligen met een CHMOD
Gewoon een onveilig script / webhosting dus, register_globals staat aan, iets wat al uit staat sinds PHP 4.2.0, ergens rond eind 2000. Sindsdien gebruiken we Predefined Variables zoals $_POST, $_GET en $_SERVER.

Jouw script is dus geen goed voorbeeld, ik kan die $naambezoeker ook vullen door je script aan te roepen met ?naambezoeker=blablabla. Daarnaast draait je Webhoster met oude software/ onveilige instellingen dus leg dit probleem ook maar bij hun neer.

Dan kan jij ondertussen alles herschrijven.

Leer bovendien eerst eens programmeren...

Want dingen als dit:
<font color= "purple"><INPUT TYPE=RADIO NAME="webkleur" VALUE="paars">Paars<BR></font>


Lijkt mij uit een WYSIWYG te komen.

En je zou hierop kunnen letten:
- Codes netjes uitlijnen, zodat je overzicht hebt.
- Variables buiten quotes.
- Controle uitvoeren op binnenkomende en uitgaande waarden.
- Geen oude rotzooi als <font> en <center> enz. gebruiken.

Dat zijn dingen die je je toch beter kan aanleren als je ooit iets wilt doen in de webdesign.
Oke, ik heb gelijk register globals uit laten zetten, moet nu inderdaad alleen ff mijn scripts aanpassen...:-(

Dus nu is het al een stuk veiliger?
of moet ik nog meer aan beveiliging gaan doen?

Ik heb nooit geen studie gevolgt, heb het mezelf aangeleerd door bestaande pagina's / script te bestuderen en aan te passen zodat het voor mezelf werkt.
Ik zal ook nooit een webdesigner worden, die intensie is er niet.
Sowieso moet je HTML altijd lowercase zijn op de waarde na.

Je moet sowieso alle variabelen die uit een formulier komen aanroepen met $_POST['naam'].

Deze controleer je vervolgens op correctheid.

Want dit script stamt idd uit de middeleeuwen.

Toch grappig, ik had niet verwacht ooit zo'n script nog eens te zien.

Dit is niet lullig bedoelt natuurlijk. Als het jou zo is geleerd, weet je immers niet beter.
Bedankt voor je begrip Dennis, ik ben nu even een stukje script aan het herschrijven, als ik deze straks hier plaats, zou je ( jullie ) dan even kunnen kijken of dat beter is?

Reageren