Nej. Det er den aldrig, når du putter _GET og _POST variabler direkte ind i SQL-udtryk, med mindre det er prepared statements.
$bruger = mysql_real_escape_string($_GET['bruger']); $select_auth = mysql_query("SELECT * FROM brugere WHERE brugernavn=$bruger"); - Vil være det mindste du skal gøre.
Jeg mener ikke at man kan droppe table her, da mysql_query kun tager imod én statement.
Det er dog ikke en sikker måde du har gjort det på. Hvis en bruger f.eks skriver '; DROP TABLE brugere;' Ville det sådan her ud: SELECT * FROM brugere WHERE brugernavn=''; DROP TABLE brugere;''
Jeg tror ikke det vil virke, fordi mysql_query som sagt vidst kun tager én query ad gangen. Han kan dog også skrive andet ' or PASSWORD = 'gætetkodeord' SELECT * FROM brugere WHERE brugernavn='' or PASSWORD = 'gætetkodeordsomenellerandetbrugerhar'
Det kunne man godt skrive, men det får man desværre ikke meget ud af. Jo, den selecter alle brugere, men bagefter i koden tjekker han også om kodeordet er det samme som den selectede bruger. Det skulle vidst også have været ' OR '1=1
Men ja, hvorfor skulle man tænke så abstrakt, når man lige så godt bare kan sikre koden 100% mod injections med et enkelt funktionskald.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.