ich beschäftige mich jetzt schon eine weile mit php
und mir stellt sich jetzt die frage was muss ich den beachten um sichere php scripts zu schreiben? und wie kann ich die den ausschalten?
also was ich bisher kenne ist das man keine keine dateien deren Dateiname in einer variable die der nutzer ändern kann steht , includieren sollte
vieleicht könnt ihr mir ja ein bishcen helfen (ich bin mir sicher das ihr das könnt ;))
[phpnet]eval[/phpnet] = evil
Das ist ein ziemlich wichtiger merksatz. Warum kannst du dir sicherlich denken.
Desweiterne solltest du alle mysql query immer escapen ([phpnet]mysql_real_escape_string[/phpnet])
Gib dem benutzer immer soviel wie möglich bereits über das formular vor. Alle benutzereingaben sollten immer geprüft werden auch wenn das formular scheinbar keine fehleingaben zuläst. Du wunderst dich was man alles erreichen kann wenn man will.
Übergebe keine kritischen daten welche schadenanrichten per Get-Parameter.
wie sicher sind den sachen die ich per post übergebe?
und mir stellt sich gerade die frage ist es bei einem script das kontroliert ob das richtige passwort eingegeben wurde nicht sinvoll bevor die daten zur kontrolle gesendet werden die eingabe schon zu verschlüsseln?
was du natürlich machen kannst ist wenn du z.B. eine über session etwas übergibst kannst du noch eine session übergeben wo was drinnensteht wie vllt lol
dadrauf kommt kaum einer und es weiß keiner das es das gibt! und nur wenn lol da ist functioniert es auch!
ich bin auch kein sicherheitsexperte, aber versuche immer wenn du schleifen verwendest, dass es keine möglichkeit für eine endlosschleife gibt, und denk immer drann, dass es genug user gibt, die versuchen deine querys zu misbrauchen. zb eine ein loginfeld für admins:
benutzername : wurscht
passwort : wurscht" OR 1=1
das hab ich mal wo gelesen, funzt zwar eigentlich nie, zeigt aber das problem auf. denn wenn jemand die sql syntax so hat
select * from admins where user=„benutzer“ AND pass=„passwort“
dann würde das so aussehen
select * admins where user=„wurscht“ AND pass=„wurscht“ OR 1=1
^^
also wie schon gesagt lieber die eingaben, die in eine datenbank kommen escapen lassen.