[PHP MySQL] bla.php?id=3; drop database bla

Pagina: 1
Acties:

Onderwerpen


  • decramy
  • Registratie: December 2001
  • Laatst online: 18-09 20:29

decramy

root@birdie:~#

Topicstarter
ik heb eens even lopen nadenken.

Ik heb een bestandje met ongeveer dit:
PHP:
1
mysql_query("SELECT * FROM table WHERE id=".$_GET["id"]);


En als ik nu eens bla.php?id=1;drop database test oproep, wordt de databese test nu verwijderd...

Hoort dit?

20*375Wp met Enphase IQ7+ micro's | Stiebel Eltron HGE Water/Water WP 9kW | Tesla M3, powered by SmartEVSE | Servertje @ www.coloclue.net


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Nee, dat hoort niet.

Zie ook dit topic:
[rml][ Alg] Safe Code part II - SQL en HTML injection tegengaan[/rml]


Om dit tegen te gaan kan je oa gebruik maken van parameterized queries, ipv je queries te gaan concateneren.

[ Voor 83% gewijzigd door whoami op 17-09-2003 10:38 ]

https://fgheysels.github.io/


  • Emmeau
  • Registratie: Mei 2003
  • Niet online

Emmeau

All your UNIX are belong to us

Kwestie van rechten imho.
Je wilt je asp user echt niet drop rechten geven...

Vind hem wel grappig trouwens

If you choose to criticise you choose your enemies


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Lekker veilig als anderen dat kunnen doen.

{signature}


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

mysql geeft een foutmelding met een ;

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

PHP:
1
2
3
<?
mysql_query("SELECT * FROM table WHERE id=". (int)$_GET["id"]);
?> 

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je zult altijd moeten controleren of dat ID wel een geldige waarde bevat, als die waarde "eigenlijk alles" kan zijn, moet je ervoor zorgen dat ie goed geformatteerd is.

In dit geval zal je moeten controleren of het een integer is, met waarschijnlijk een waarde groter dan 0.
Als het een string is, dan zul je wat sneller bij de formattering uitkomen en moet je goed naar mysql_escape_string en dergelijke kijken.
Tux schreef op 17 September 2003 @ 11:42:
PHP:
1
2
3
<?
mysql_query("SELECT * FROM table WHERE id=". (int)$_GET["id"]);
?> 
Als ik iets vies vindt... Je gooit nu gewoon alle informatie die je hebt weg en maakt er een int van, ongeacht of dat het wel of niet was.

Als er een string wordt meegegeven, dan _mag_ er geen query uitgevoerd worden. Want het was geen geldig ID.

[ Voor 35% gewijzigd door ACM op 17-09-2003 11:44 ]

Pagina: 1