Lord Posted March 2, 2011 Report Share Posted March 2, 2011 Sveiki. Veidoju skriptu, kas pēc raksta atvēršanas pieskaita 1 pie skatījumu reizēm datu bāzē. $arid=$_GET['article']; mysql_query("UPDATE articles SET read = read+1 WHERE id = \"$arid\"") or die(mysql_error()); Taču man tiek izmests "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read = read+1 WHERE id = "2"' at line .." "read" ir int(11) ar noklusētu vērtību 0. Kur varētu būt kļūda? Esmu nomēģinājies visādi. Piemēram, nestrādā arī tad, ja SET read = \"4\", izmet to pašu error. Quote Link to comment Share on other sites More sharing options...
Rincewind Posted March 2, 2011 Report Share Posted March 2, 2011 READ varētu būt rezervēts. Pamēģini: UPDATE articles SET `read` = `read`+1 WHERE id = $arid Quote Link to comment Share on other sites More sharing options...
Lord Posted March 2, 2011 Author Report Share Posted March 2, 2011 Rincewind, paldies, tas atrisināja problēmu, bet es īsti nesapratu risinājumu. Kā rezervēts? Quote Link to comment Share on other sites More sharing options...
Rincewind Posted March 2, 2011 Report Share Posted March 2, 2011 Rincewind, paldies, tas atrisināja problēmu, bet es īsti nesapratu risinājumu. Kā rezervēts? Ir vārdi kurus izmanto pats SQL lai saprastu tavas komandas. SELECT, INSERT utt. READ arī. Te ir pilns saraksts Quote Link to comment Share on other sites More sharing options...
mad182 Posted March 3, 2011 Report Share Posted March 3, 2011 Cerams tas bija tikai piemērs un kodā tiešām nav GET manīgais pa taisno SQL kverijā? Ja tas id ir skaitlis, tad tipecasto viņu uz int $arid = (int)$_GET['article']; Ja strings, tad eskeipo ar $arid = mysql_real_escape_string($_GET['article']); Citādi kāds garlaikots āksts var izdomāt piemēram nodzēst tavu datubāzi. Quote Link to comment Share on other sites More sharing options...
Rincewind Posted March 3, 2011 Report Share Posted March 3, 2011 Pilnībā piekrītu ka dati jāpārbauda. Bet šinī konkrētā gadījumā neko nograut nav iespējams, vismaz nekādas iespējas to izdarīt neredzu. Quote Link to comment Share on other sites More sharing options...
mad182 Posted March 3, 2011 Report Share Posted March 3, 2011 (edited) lala.php?article=1"; UPDATE articles SET title = "wtf Edited March 3, 2011 by mad182 Quote Link to comment Share on other sites More sharing options...
Rincewind Posted March 3, 2011 Report Share Posted March 3, 2011 lala.php?article=1" or "1" = "1 Jā, šādu es arī izdomāju. Neko sliktāku gan ne, izdzēst db vai kaut ko citu sačakarēt man nesanāca :) Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted March 3, 2011 Report Share Posted March 3, 2011 Palasi vairāk par "blind sql injection" un varbūt vēl idejas radīsies ;) http://www.securitydocs.com/library/2651 http://en.wikipedia.org/wiki/SQL_injection#Blind_SQL_injection http://www.securitytube.net/video/704 http://technet.microsoft.com/en-us/library/cc512676.aspx http://seclists.org/bugtraq/2005/Feb/att-288/zk-blind.txt Quote Link to comment Share on other sites More sharing options...
Rincewind Posted March 3, 2011 Report Share Posted March 3, 2011 Palasi vairāk par "blind sql injection" un varbūt vēl idejas radīsies ;) http://www.securitydocs.com/library/2651 http://en.wikipedia.org/wiki/SQL_injection#Blind_SQL_injection http://www.securitytube.net/video/704 http://technet.microsoft.com/en-us/library/cc512676.aspx http://seclists.org/bugtraq/2005/Feb/att-288/zk-blind.txt Radās doma ka varētu ar viltīgiem subselektiem dabūt jebkuras tabulas jebkura ieraksta vērtību. Laiks gan pamatīgi jāpatērē. Nezinu vai reāli strādās, vajadzēs kādreiz pamēģināt. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.