Formulieren Beveiligen [HELP!]

  • Hallo allemaal,


    ik heb een scriptje in elkaar gezet om mijn portfolio te voorzien van een 'admin panel'


    ik wil dat mensen via het contactformulier op mijn website iets in mijn database zetten (INSERT INTO), en dat ik ze vervolgens uit kan lezen op een bepaalde pagina op mijn site (het 'admin panel').


    dit is allemaal redelijk gelukt. Via het contactformulier kan ik de drie velden (naam, email, bericht) in mijn database zetten. en op een andere pagina kan ik ze weer opvragen.


    maar mijn vraag is nu: Hoe beveilig ik deze formulieren tegen sql injections / xss etc? Ik heb hier totaal geen verstand van en heb de formulieren ook aan de hand van een tutorial gemaakt.


    hier de scripts:


    process.php


    showemails.php


    en verder het stukje html van het formulier.




    edit:


    nu heb ik volgend script gevonden op internet, en ik heb gelezen dat je deze bovenin de pagina moest includen om het tegen sql injection te beveiligen?


    maar werkt dit script ook voor mijn formulier?


  • Guest, wil je besparen op je domeinnamen? (ad)
  • Hallo,


    Dit doe je door te zoeken naar wat een xxs aanval precies inhoud en hoe je dit kan voorkomen. Zelfde geld voor SQL injecties.
    Zodra je het begrijpt kan je het voorkomen. Vaak staat bij een uitleg hoe het werkt ook een uitleg hoe je het kan voorkomen.


    Oftewel, verdiep je er even in en je zult het zelf kunnen toepassen ;)


    Mvg,
    Tim


  • Hallo tim,


    heb er al veel over gelezen maar ik zie dan allemaal scripts die totaal niet op die van mij lijken, waardoor ik heel snel in de war raak. Dus ik had gehoopt dat iemand mij dit verder uit kan leggen aan de hand van mijn gepostte scripts.

  • showemails: bekijk de functie htmlentities, je echo't de waarde maar eventuele xss ga je tegen met htmlentities
    process: bekijk de functie mysqli::real_escape_string (of overweeg PDO met prepared statements)


    dat laatste stukje is voor de oude mysql_* functionaliteiten, jij gebruikt mysqli (i => improved). kan werken, maar beveiligd niet optimaal.

  • showemails: bekijk de functie htmlentities, je echo't de waarde maar eventuele xss ga je tegen met htmlentities
    process: bekijk de functie mysqli::real_escape_string (of overweeg PDO met prepared statements)


    dat laatste stukje is voor de oude mysql_* functionaliteiten, jij gebruikt mysqli (i => improved). kan werken, maar beveiligd niet optimaal.



    heb je skype? zou je mij dan jouw skype naam toe kunnen sturen via privé bericht?

  • http://stackoverflow.com/quest…vent-sql-injection-in-php : Hier raden ze preprared statements aan, dit is dan ook het veiligste om te doen en in mijn ogen het makkelijkste aangezien je niks meer met real_escape_string hoeft te doen of met trim etc.


    Wil je het toch zonder prepared statements doen raad ik je aan op te zoeken welke functie voor wat precies bestemd is. htmlspecialchars() is bijvoorbeeld voor een HTML input en trim() kan bijvoorbeeld enters verwijderen in een string.
    Stel dat je alleen een getal wilt laten invoeren kun je een controle doen met is_numeric() of met ctype_digit(), zo kan de gebruiker alleen nog maar cijfers invoeren.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!