PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP und die Sicherheit ;D



Hennieliminator
26.11.2008, 17:33
Hallo Leute,
habe mal wieder ne Frage ;D

Folgendes:
Wie bekommt man PHP-Scripte sicher?
Zugriff auf die php.ini habe ich nicht.. also geht es hier rein um die Validierungsmöglichkeiten...

Was ist nötig, und was ist absolut wichtig?

Bisher nutze ich grundsätlich addslashes(stripslashes($variable)) um eine Eingabe wie Text (also nichts, was einfach nur eine Zahl ist, oder ein email format hat... Sondern text wie hier im Forum der Post :P) zu validieren...
Htmlentities habe ich bisher noch nicht genutzt, weil ich bisher immer html codes in den texten gebraucht habe...
Was gibt es noch für möglichkeiten PHP sicher zu bekommen?

Achso..^^ für id's o.Ä. nutze ich is_numeric($id) in einer if, damit dort nichts anderes rein kann^^...

Ich freue mich auf eure antworten :)

MfG
Henni

Sph1nX
26.11.2008, 17:42
Kannst auch gewisse Zeichen ersetzen also einfach /'*"<> mit _ ersetzen

Lidloses_Auge
26.11.2008, 17:53
mysql_real_escape_string wäre noch eine wichtige Funktion in Kombination mit magic_quotes_gpc.

Naja ok, magic quotes bringt nur manchmal etwas, kann oft umgangen werden.

Bei Integern versuche wirklich nur eingaben von 0-9 zuzulassen, bzw. maximalgrenze je nach Wert.
Bei Strings kannste das ja ebenso einschränken um Sonderzeichen zu filtern.

Wenn du PHP Dokumente includen lassen willst, würd ich das nie über Benutzereingaben machen, sondern die URL's der Seiten in eine Art Whitelist zu packen, in der alle Seite stehen, die zu deiner Seite gehören, um fremd includes zu verhindert.

Anstatt include() würd ich auch require() benutzen.

Wenn mir noch was einfällt ergänze ich es.

echoslider
26.11.2008, 18:34
htmlspecialchars wandelt alle zeichenfolgen wie <? ?> ' oder sonst für welche zeichen die bei einer variable stören könnten um in normalen text. das der code falls die zeichenfolge ein code is(z.b javascript) nicht ausgeführt werden kann.

AlterHacker
26.11.2008, 18:46
$d = mysql_real_escape_string(htmlspecialchars($in)); ist eg alles was du brauchst ;)

Hennieliminator
26.11.2008, 18:58
htmlentities hatte ich oben ja schon erwähnt... (is identisch mit htmlspecchars... nur wandelt noch mehr um xD)
mysql_real_escape_string ist eine sehr gute idee^^ hab ich bisher noch nicht gekannt xD werde ich benutzen...

@auge: magic_quotes werden wohl bald verfallen und in aktuelleren php versionen nicht mehr weitergeführt.... Außerdem, wenn ich das richtig verstanden habe, dann würde das ja nur automatisch das machen, was ich mit addslashes(stripslashes($variable)) manuell mache, oder?

Includieren tu ich sowieso nur mit festen Parametern, aber das ist auf jeden fall eine idee für meine checkliste :P

@sphinx: so einfach würd ich das nie machen... die user sollen ja text eingeben und hier kommen nunmal "s und 's und ***s vor... wenn dann da einfach n _ steht stört es ja den content... was ich auch machen könnte, wär, mir einen algo zu schreiben, der nach schädlichen strukturen sucht und sie entschärft... naja zuviel arbeit.. wobei ich wenn ich langeweile hab evtl. mal anfangen könnt xDD

@rest: Danke!^^


MfG
Henni


ps.: gilt es als hackanfrage, wenn ich meine eigene Website von "Profis" auf ihre sicherheit überprüfen lassen will?

Added after 9 minutes:

*geistesblitz*

ctype_digit könnte theoretisch besser sein, als is_numeric... überprüft, ob der parameter nur aus ziffern besteht.. also sql injection informationen mit negativen id's sind schomal nicht möglich oder? weil das - ja nicht als ziffer zählt, gel? man^^

*geistesblitz aus*

Hu5eL
04.12.2008, 06:53
soviel ich weis ist es nicht verboten zu fragen ob jemand deine seite mal "chekcen" kann.... würde nicht den direkten link posten, sondern frag halt wer die adresse per pm haben will

Hennieliminator
04.12.2008, 14:24
Das ganze hat sich schon "erledigt" habs mit Suicide abgesprochen und wenn ich mit der überarbeitung fertig bin, werd ich hier oder in der "Cracking" oder eben "SQL-Injections" Ecke mal ein neues Thema dazu aufmachen ;D

MfG