Toon posts:

[PHP][mysql] anti SQL injection

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008

Verwijderd

Topicstarter
Op dit moment probeer ik een simpele aanmeldsite in elkaar te zetten. Mensen moeten zich hierop kunnen aanmelden. Dmv een aantal invoervelden moeten ze een deel gegevens zoals naam, klas, nickname, email invoeren. Deze gegevens worden opgeslagen in een mysql database. Een deel gegevens wordt ook weer op de site weergegeven. Op dit moment probeer ik een beveiliging te schrijven tegen sql injection. In de boeken die ik heb vind ik overal wel dat het heel belangrijk is om iets tegen sql injection te doen plus een paar kleine stukjes code, maar ik ben de draad een klein beetje kwijt geraakt. Ik heb alles maar bij elkaar gezet in een functie:
code:
1
2
3
4
5
6
7
8
9
10
function cleanup_text ($value="")
{
    $value =strip_tags($value);
    $value =stripslashes($value);
    $value = addslashes($value);
    $value =htmlspecialchars($value);
    $value =htmlentities($value);
    $value = mysql_escape_string($value);
    return $value;
}
Dit geeft natuurlijk niet helemaal het gewenste resultaat. Ik heb er geen idee van welke codes ik in welke volgorde moet gebruiken. Zou er iemand mij een kleine uitleg kunnen geven. Ik ben absoluut niet te beroerd om er moeite voor te doen.

Het is overigens de bedoeling dat alle html/php codes zonder pardon worder weggegooid. Verder mogen alle tekens gebruikt worden. Een nickname kan uit alle tekens bestaan. Maar ik wil wel veilig zijn voor injections.

[ Voor 10% gewijzigd door Verwijderd op 27-01-2005 17:03 ]


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Wat doet elke functie die je aanroept? ( hint staat in de manual www.php.net/<functienaam> )
En dan zul je vanzelf zien welke functie's dubbel zijn...

Programmer - an organism that turns coffee into software.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

PHP:
1
2
3
    $value =stripslashes($value); // haal escape characters weg
    $value = addslashes($value); // voeg escape characters toe
    $value = mysql_escape_string($value); // voeg escape characters toe

Je overdrijft het IMHO een beetje. Om SQL injectie te voorkomen hoef je alleen maar addslashes te gebruiken bij het opslaan, en stripslashes bij het ophalen. Eventueel kun je nog een htmlspecialchars over de string laten gaan, maar dan liever bij het ophalen dan bij het opslaan. Dat scheelt je wat ruimte in de database. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Stripslashes bij het ophalen zou niet nodig moeten zijn. Het is slechts om een geldige en niet de manipuleren query te veroorzaken. De quotes komen natuurlijk niet in de database terecht.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Mmmmmja dit moet je toch met een kwartiertje www.php.net zelf ook wel kunnen oplossen, die documentatie is verdomd helder :) Beetje logisch nadenken erbij over welke omstandigheden kunnen leiden tot SQL cq. HTML-injection en je bent klaar :)

Al met al niet echt een topic waard ;)

Professionele website nodig?


Dit topic is gesloten.