Ik wil mijn code extra veilig maken.
nu was ik aan het denken zou dit veilig zijn?
PHP Code:
$naam = ctype_alnum(mysql_real_escape_string(htmlentities($_GET['naam']))); $naam = str_replace("-", " ", $naam);
- code veilig maken
-
08-05-2012, 00:34 #1
- Berichten
- 25
- Lid sinds
- 13 Jaar
code veilig maken
-
-
08-05-2012, 01:04 #2
- Berichten
- 152
- Lid sinds
- 13 Jaar
Re: code veilig maken
alleen mysql_real_escape_string(); is genoeg, dan kan er via sql injections niets meer gebeuren
-
08-05-2012, 01:40 #3
- Berichten
- 25
- Lid sinds
- 13 Jaar
Re: code veilig maken
bedankt
-
10-05-2012, 03:09 #4
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Re: code veilig maken
Lol.. mysql_real_escape_string() voorkomt inderdaad SQL injections. Maar dit zegt nog niks over veiligheid. Sterker nog, het is zo lek als een mandje ;-)
Omdat men gewoon html kan toevoegen aan hun naam (<html>naam</html>) ben je vatbaar voor XSS en het gevolg daarvan is uiteraard bijvoorbeeld Session Hijacking.
Goed blijven valideren dus! je was goed op weg. Niet luisteren naar Ellis.
-
10-05-2012, 14:19 #5
- Berichten
- 20
- Lid sinds
- 13 Jaar
Re: code veilig maken
Controleer dus eerst netjes via een if-statement of de naam correct is. Je kan dit met ctype doen en erna kun je ook nog eventueel een max aantal chars aangeven.
-
10-05-2012, 14:28 #6
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: code veilig maken
Lol.. mysql_real_escape_string() voorkomt inderdaad SQL injections. Maar dit zegt nog niks over veiligheid. Sterker nog, het is zo lek als een mandje ;-)
Omdat men gewoon html kan toevoegen aan hun naam (<html>naam</html>) ben je vatbaar voor XSS en het gevolg daarvan is uiteraard bijvoorbeeld Session Hijacking.
Goed blijven valideren dus! je was goed op weg. Niet luisteren naar Ellis.
Als je er ctype_alnum() omheen zet kan die naam toch alleen 'true' of 'false' worden... ;)
-
11-05-2012, 01:01 #7
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Re: code veilig maken
"alleen mysql_real_escape_string(); is genoeg"
Dat is dus niet genoeg.
-
11-05-2012, 01:07 #8
- Berichten
- 98
- Lid sinds
- 17 Jaar
Re: code veilig maken
Een betere oplossing dan mysql_real_escape vind ik overigens query statements. Het komt erop neer dat je de query los verzend van de data. In de query voer je dan gewoon een vraagteken in, en later stuur je de data los naar de database.
http://www.php.net/manual/en/class.mysqli-stmt.php
Als je jezelf die methode aanleert (ik vind het naast veiliger ook overzichtelijker) loop je ook niet het risico dat er een variabele doorglipt.
-
11-05-2012, 01:14 #9
- Berichten
- 106
- Lid sinds
- 15 Jaar
Re: code veilig maken
Prepared statements zijn erg veilig en de programmatuur ziet er ook een stuk 'schoner' uit.
http://php.net/manual/en/pdo.prepared-statements.php
-
11-05-2012, 01:38 #10
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: code veilig maken
Maar mijn opmerking was uiteraard om aan te geven dat TS die regel niet eens ingeklopt heeft om te testen anders had ie vast zelf wel ook wel gezien dat het resultaat alles behalve goed zou zijn geweest :)
Edit: 'mooi' of 'handig' is een ander verhaal.
-
11-05-2012, 02:36 #11
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Re: code veilig maken
SQL Injections en XSS staan op 1 en 2 in de OWASP top 10 webapplicatie kwetsbaarheden. Zorg dan tenminste dat programmeurs die zich melden met dit soort vragen goed ingelicht worden.
Kortom: Goed valideren voordat je data wegschrijft naar je database!!
-
11-05-2012, 09:24 #12
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: code veilig maken
Daar zit dus exact je denkfout! Data "presenteren" is een andere tak van sport als data "valideren". Je weet immers exact waar je data aan moet voldoen alvorens je het wegschrijft in de database. Lijkt me sterk dat jij deze validatie doet tijdens het lezen van de data.
SQL Injections en XSS staan op 1 en 2 in de OWASP top 10 webapplicatie kwetsbaarheden. Zorg dan tenminste dat programmeurs die zich melden met dit soort vragen goed ingelicht worden.
Kortom: Goed valideren voordat je data wegschrijft naar je database!!
Sterker nog... TS zijn code is 100% veilig (en hoogstwaarschijnlijk ook 100% fout trouwens) want zijn var kan op basis van zijn enkele regel slechts 2 waarden aannemen. En of je die in de db stopt of op je scherm gooit, maakt geen fluit uit. Je kunt niet eens met zekerheid zeggen dat TS die 'naam' überhaupt in de database wilt stoppen of tonen op dat moment.
TS probeert 3 dingen te doen met zijn variabele die gezamelijk een hoop overlappen, in de verkeerde context gebuikt worden, tegenstrijdig zijn en niet het gewenste effect effect zullen hebben... maar het is niet onveilig... het is gewoon fout...
In plaats van te proberen iedereen af te zeiken zou je als programmeur gewoon aan ts moeten vragen wat ie wil bereiken en hem op basis daarvan advies geven. En misschien kun je hem nog uitleggen wát ie fout doet.
Er zijn genoeg systemen (denk aan een willekeurig CMS) waarbij het toevoegen van html de normaalste zaak van de wereld is.
-
11-05-2012, 12:59 #13
- Berichten
- 98
- Lid sinds
- 17 Jaar
Re: code veilig maken
Daar zit dus exact je denkfout! Data "presenteren" is een andere tak van sport als data "valideren". Je weet immers exact waar je data aan moet voldoen alvorens je het wegschrijft in de database. Lijkt me sterk dat jij deze validatie doet tijdens het lezen van de data.
SQL Injections en XSS staan op 1 en 2 in de OWASP top 10 webapplicatie kwetsbaarheden. Zorg dan tenminste dat programmeurs die zich melden met dit soort vragen goed ingelicht worden.
Kortom: Goed valideren voordat je data wegschrijft naar je database!!
Als je de string gaat filteren voor je hem in de database stopt raak je informatie kwijt. Besluit je later bijvoorbeeld dezelfde string terug te laten komen in een veilige output (textarea bijvoorbeeld) en hebt mogelijke XSS eruit gesloopt heb je het bericht kreupel gemaakt.
Het gaat hier om data. Aan data moet je niet klooien. Je moet het weergeven van data veilig maken. Dit moet je sowieso, want bij het parsen van je site moet je er vanuit gaan dat alle data, ook die uit je eigen script komt, onveilig is.
Het beste kun je alles in de database opslaan zoals je het binnen krijgt (tot een bepaalde hoogte) en zorgen dat de output in orde is. Niet dingen veilig wegschrijven in de database en klakkeloos printen naderhand. Er kan onderweg van de database naar de render engine nog vanalles mis gaan met de data.
-
11-05-2012, 13:05 #14
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: code veilig maken
Waar zit de 'ik vind dit leuk' knop voor John Timmer :-) Sinds wanneer heerst er een te hoog testosteron gehalte onder programmeurs? haha.
-
11-05-2012, 13:42 #15
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: code veilig maken
Hij heeft gelijk dat je input uiteraard moet controleren (maar wel volgens de specs. want shit-in = shit-out tenslotte) maar je moet gewoon voorzichtig zijn met aannames want iedereen maakt fouten. De één vanwege gebrek aan kennis, de ander omdat ie teveel aanneemt.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic