abonnement Unibet Coolblue
  zaterdag 21 april 2012 @ 13:58:05 #1
12221 Tijn
Powered by MS Paint
pi_110591964


Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt :)

Zie ook:
PHP Dataverwerking
Officiële PHP website
PHP Documentatie
MySQL Reference Manual
Yet Another PHP Faq
PHP Cheat Sheet
PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

Tutorials:
W3Schools PHP
W3Schools SQL
pi_110591981
quote:
14s.gif Op zaterdag 21 april 2012 13:47 schreef themole het volgende:

[..]

Zou het als ik jou was snel oplossen, de onderste site in je signature is al vatbaar daarvoor.

Verander ?id=9 maar eens in ?id='; krijg je meteen een error.
Of je GET of POST gebruikt maakt helemaal niets uit voor de behandeling van de invoer. Het is en blijft user input, en dat is niet te vertrouwen.
pi_110591990
quote:
14s.gif Op zaterdag 21 april 2012 13:47 schreef themole het volgende:

[..]

Zou het als ik jou was snel oplossen, de onderste site in je signature is al vatbaar daarvoor.

Verander ?id=9 maar eens in ?id='; krijg je meteen een error.
Ja een error, maar dat moeten mensen ook niet zelf gaan invullen natuurlijk, als ik naar google.nl/niks ga krijg ik ook een error.

Maar kunnen ze echt schade aanrichten? Want ik heb ook sites voor bedrijven e.d. gemaakt op deze manier.

Wat doet bijvoorbeeld

<?php
'SELECT * FROM `table`
WHERE `string` = "'.mysql_real_escape_string($_GET['foo']).'"
AND `number` = '.intval($_GET['bar']);
?>

dat stukje, die zorgt ervoor dat je alleen maar een woord kan invullen en geen mysql code ofzo?
  zaterdag 21 april 2012 @ 14:04:35 #4
12221 Tijn
Powered by MS Paint
pi_110592183
quote:
0s.gif Op zaterdag 21 april 2012 13:58 schreef JDx het volgende:

[..]

Ja een error, maar dat moeten mensen ook niet zelf gaan invullen natuurlijk, als ik naar google.nl/niks ga krijg ik ook een error.
Bij Google krijg je een error die door Google zelf is gegenereerd. Bij jouw sites krijg je errors die door PHP worden gemaakt. In feite help je hackers door ze informatie te geven over hoe jouw programmatuur in elkaar steekt.

quote:
Maar kunnen ze echt schade aanrichten? Want ik heb ook sites voor bedrijven e.d. gemaakt op deze manier.
Ja, je kunt sowieso alle data in je database uitlezen. Als hetzelfde MySQL-account ook schrijfrechten heeft, kan de database ook worden aangepast.

quote:
Wat doet bijvoorbeeld

<?php
'SELECT * FROM `table`
WHERE `string` = "'.mysql_real_escape_string($_GET['foo']).'"
AND `number` = '.intval($_GET['bar']);
?>

dat stukje, die zorgt ervoor dat je alleen maar een woord kan invullen en geen mysql code ofzo?
mysql_real_escape_string() zorgt ervoor dat het niet mogelijk is om uit de quotes die om je query staan te breken. Daardoor blijft alle user-input onderdeel van jouw query en kan een kwaadwillende niet zelf een nieuwe query uitvoeren.
  zaterdag 21 april 2012 @ 14:04:43 #5
302853 themole
graaft totaal door.
pi_110592188
quote:
0s.gif Op zaterdag 21 april 2012 13:58 schreef Light het volgende:

[..]

Of je GET of POST gebruikt maakt helemaal niets uit voor de behandeling van de invoer. Het is en blijft user input, en dat is niet te vertrouwen.
Waar zeg ik dat het uitmaakt of je POST of GET gebruikt? Ik geef alleen maar een voorbeeld, in dit geval via GET, maar via POST is het natuurlijk ook niet te vertrouwen. :)

quote:
0s.gif Op zaterdag 21 april 2012 13:58 schreef JDx het volgende:

[..]

Ja een error, maar dat moeten mensen ook niet zelf gaan invullen natuurlijk, als ik naar google.nl/niks ga krijg ik ook een error.

Maar kunnen ze echt schade aanrichten? Want ik heb ook sites voor bedrijven e.d. gemaakt op deze manier.

Wat doet bijvoorbeeld

<?php
'SELECT * FROM `table`
WHERE `string` = "'.mysql_real_escape_string($_GET['foo']).'"
AND `number` = '.intval($_GET['bar']);
?>

dat stukje, die zorgt ervoor dat je alleen maar een woord kan invullen en geen mysql code ofzo?
http://nl.wikipedia.org/wiki/SQL-injectie
Niet altijd serieus
  zaterdag 21 april 2012 @ 14:05:10 #6
12221 Tijn
Powered by MS Paint
pi_110592204
quote:
14s.gif Op zaterdag 21 april 2012 14:04 schreef themole het volgende:

[..]

Waar zeg ik dat het uitmaakt of je POST of GET gebruikt?
Dat vraagt JDx.
  zaterdag 21 april 2012 @ 14:05:48 #7
302853 themole
graaft totaal door.
pi_110592231
quote:
2s.gif Op zaterdag 21 april 2012 14:05 schreef Tijn het volgende:

[..]

Dat vraagt JDx.
Idd, die quote was achteraf niet echt handig. :P
Niet altijd serieus
pi_110592276
quote:
14s.gif Op zaterdag 21 april 2012 14:04 schreef themole het volgende:

[..]

Waar zeg ik dat het uitmaakt of je POST of GET gebruikt? Ik geef alleen maar een voorbeeld, in dit geval via GET, maar via POST is het natuurlijk ook niet te vertrouwen. :)
Je reageert op een vraag of er post gebruikt moet worden met een opmerking 'zo zou ik het doen'. En dan reageer ik daar weer op.
pi_110592357
JDx doe dat eens heel snel veranderen, je bent binnen 10 seconden binnen op je database man.
pi_110592392
Ja ik ben bezig, maar zie niet hoe, pm eens hoe je het doet?

Please help ff, want ik heb ook CMS'en gemaakt voor bedrijven, software om medewerkers in te plannen bij Restaurants, etc.
pi_110592479
http://kledingmerken.jdx.nl/single.php?id=44

Je doet ergens $_GET['id'] richting de database, begin dat eerst maar eens te veranderen naar mysql_real_escape_string($_GET['id'])

Beste is om PDO te gebruiken.
pi_110592515
PDO?

Maar laat eens zien hoe je misbruik maakt van dat dan? Dat begrijp ik niet helemaal als ik invul:

44' OR 'a' = 'a'

dan gebeurd er niets.
pi_110592551
-edit weg-

Neem aan dat je het nu wel gezien hebt, heeft geen meerwaarde om te laten staan.

[ Bericht 76% gewijzigd door TwenteFC op 21-04-2012 14:23:55 ]
  zaterdag 21 april 2012 @ 14:17:13 #14
157634 Civilian
Better safe than Sony
pi_110592566
quote:
0s.gif Op zaterdag 21 april 2012 14:15 schreef JDx het volgende:
PDO?

Maar laat eens zien hoe je misbruik maakt van dat dan? Dat begrijp ik niet helemaal als ik invul:

44' OR 'a' = 'a'

dan gebeurd er niets.
http://php.net/manual/en/pdo.prepared-statements.php
I'm not good with advice.. Can i interest you in a sarcastic comment?
pi_110592591
quote:
19s.gif Op zaterdag 21 april 2012 14:14 schreef TwenteFC het volgende:
http://kledingmerken.jdx.nl/single.php?id=44

Je doet ergens $_GET['id'] richting de database, begin dat eerst maar eens te veranderen naar mysql_real_escape_string($_GET['id'])
Ik vind intval($_GET['id']) ook goed, dan weet je zeker dat je een getal hebt en niet een string als '9 or 1=1'.
quote:
Beste is om PDO te gebruiken.
True. Maar als je een hele applicatie moet omschrijven, is dat best veel werk.
pi_110592627
quote:
0s.gif Op zaterdag 21 april 2012 14:15 schreef JDx het volgende:
PDO?

Maar laat eens zien hoe je misbruik maakt van dat dan? Dat begrijp ik niet helemaal als ik invul:

44' OR 'a' = 'a'

dan gebeurd er niets.
http://kledingmerken.jdx.nl/single.php?id=9%20or%201%3D1
  zaterdag 21 april 2012 @ 14:19:28 #17
157634 Civilian
Better safe than Sony
pi_110592641
quote:
0s.gif Op zaterdag 21 april 2012 14:17 schreef Light het volgende:

[..]

Ik vind intval($_GET['id']) ook goed, dan weet je zeker dat je een getal hebt en niet een string als '9 or 1=1'.

[..]

True. Maar als je een hele applicatie moet omschrijven, is dat best veel werk.
Als je websites hebt voor bedrijven kan je dit soort dingen niet maken. Dan maar omschrijven. Maar dit is gewoon link ;)
I'm not good with advice.. Can i interest you in a sarcastic comment?
pi_110592672
quote:
Verrek :)

Mooi dat ik dit nu ontdek en niet dat mn baas opeens met een boze klant komt :P
pi_110592713
quote:
7s.gif Op zaterdag 21 april 2012 14:19 schreef Civilian het volgende:

[..]

Als je websites hebt voor bedrijven kan je dit soort dingen niet maken. Dan maar omschrijven. Maar dit is gewoon link ;)
Ik zou liever voor de snellere oplossing kiezen, denk ik. Dat omschrijven kan altijd nog, eerst moet de boel veilig worden.
  zaterdag 21 april 2012 @ 14:22:08 #20
12221 Tijn
Powered by MS Paint
pi_110592733
quote:
0s.gif Op zaterdag 21 april 2012 14:20 schreef JDx het volgende:

[..]

Verrek :)

Mooi dat ik dit nu ontdek en niet dat mn baas opeens met een boze klant komt :P
Het probleem is alleen dat er misschien al een uittreksel van je hele database op internet rondzwerft. Je wachtwoorden zijn wel salted encrypted enzo? Die zou ik ook maar even wijzigen als ik jou was.
pi_110592769
quote:
0s.gif Op zaterdag 21 april 2012 14:21 schreef Light het volgende:

[..]

Ik zou liever voor de snellere oplossing kiezen, denk ik. Dat omschrijven kan altijd nog, eerst moet de boel veilig worden.
Inderdaad, persoonlijk had ik hem op zwart gegooid.. alles nagelopen, en dan weer online gegooid.
Om vervolgens alles om te bouwen.

PDO is sowieso iets dat de moeite waard is om jezelf aan te leren.
pi_110592771
quote:
2s.gif Op zaterdag 21 april 2012 14:22 schreef Tijn het volgende:

[..]

Het probleem is alleen dat er misschien al een uittreksel van je hele database op internet rondzwerft. Je wachtwoorden zijn wel salted encrypted enzo? Die zou ik ook maar even wijzigen als ik jou was.
Wachtwoorden staan er verder niet in volgens mij.
pi_110592772
quote:
0s.gif Op zaterdag 21 april 2012 14:20 schreef JDx het volgende:

[..]

Verrek :)

Mooi dat ik dit nu ontdek en niet dat mn baas opeens met een boze klant komt :P
Wees blij dat er nog geen grapjas is geweest die een DELETE statement heeft uitgevoerd :P
  zaterdag 21 april 2012 @ 14:24:08 #25
12221 Tijn
Powered by MS Paint
pi_110592802
quote:
0s.gif Op zaterdag 21 april 2012 14:23 schreef JDx het volgende:

[..]

Wachtwoorden staan er verder niet in volgens mij.
Geen enkel wachtwoord in geen enkele tabel van je CMS?
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')