shurix Posted August 8, 2008 Report Share Posted August 8, 2008 (edited) Kādas īsti funkcijas jālieto lai uztaisītu drošu komentēšanu ar mysql. Viena ko atradu mysql_real_escape_stirng, bet kad to pielieto komentārā pirms ' parādās \. Bet nu query laikam sanāk drošs ar viņu? Kā izvadot komentāru atkal tikt vaļā no \ lai komentārs būtu smuks.? Edited August 8, 2008 by shurix Link to comment Share on other sites More sharing options...
andrisp Posted August 8, 2008 Report Share Posted August 8, 2008 Tas \ pazudīs pie ievietošanas. Tā kā neuztraucies. Problēma varētu būt tāda, ka tev ir ieslēgts magic_quotes_gpc (vai kaut kā tā) un tad sanāk, ka tev dubultā parādas pēdiņas (\\'), kas nozīmē, ka iekš datubāzes būs \'. Link to comment Share on other sites More sharing options...
shurix Posted August 8, 2008 Author Report Share Posted August 8, 2008 (edited) Jap apskatijos. magic_quotes_gpc ir ieslēgts. Nevari lūdzu uzrakstīt kādas tieši pie ievietošnas un pie izvadīšanas funkcijas pielietot? Cik sapratu lasot tepat forumā, ka izvadot vajag pielietot htmlspecialchars lai html kods neizpildītos. Edit: Tiko apskatijos ka magic_quotes automātiski pievienot \. Tātad man nevajag lietot mysql_real_escape_string funkciju? Edited August 8, 2008 by shurix Link to comment Share on other sites More sharing options...
werd Posted August 8, 2008 Report Share Posted August 8, 2008 Ievadot datubāzē - mysql_real_escape_string($str), izvadot lapā - htmlspecialchars($str). Link to comment Share on other sites More sharing options...
blackhalt Posted August 8, 2008 Report Share Posted August 8, 2008 phpjanis nē, ievada datubāzē jau 100x pārbaudītus uz visādiem filtriem cauri izlaistus datus. Link to comment Share on other sites More sharing options...
werd Posted August 8, 2008 Report Share Posted August 8, 2008 phpjanis nē, ievada datubāzē jau 100x pārbaudītus uz visādiem filtriem cauri izlaistus datus. Nu jā, katrs jau dara, kā uzskata par pareizāk, var jau laist arī 100 filtriem cauri, no tā sliktāk jau nepaliks, bet vai labāk, tas ir cits jautājums! Link to comment Share on other sites More sharing options...
Mr.Key Posted August 8, 2008 Report Share Posted August 8, 2008 (edited) Ievadot datubāzē - mysql_real_escape_string($str), izvadot lapā - htmlspecialchars($str). izmantoju šo pašu metodi + pārbaude, vai magic_quotes OFF, pareizāk sakot, to configā (.htaccess / ini_set) izslēdz ;) http://lv.php.net/manual/en/function.mysql...cape-string.php Example #3 A "Best Practice" query Edited August 8, 2008 by Mr.Key Link to comment Share on other sites More sharing options...
shurix Posted August 9, 2008 Author Report Share Posted August 9, 2008 Kādi piemēram filtri būtu tiešām svarīgi?? Link to comment Share on other sites More sharing options...
andrisp Posted August 9, 2008 Report Share Posted August 9, 2008 Atkarībā no tā kādi dati jālaiž cauri. Ja tie piemēram ir, vārds, uzvārds vai pilsēta utt, tad uzreiz vari filtrēt ārā visādus < un > utt. Ja tas ir skaitlis (piemēram, naudas summa), tad uzreiz ņemam pretī tikai skaitļus. Un tāpat visam beigās vajag arī mysql_real_ecape_string(). Link to comment Share on other sites More sharing options...
bubu Posted August 9, 2008 Report Share Posted August 9, 2008 Nevis visam, bet gan string tipa datiem (vārdam, uzvārdam, ...) nevis citiem (id, skaits, numurs, ...), ja ir nofiltrēti skaitļi jau iepriekš. Link to comment Share on other sites More sharing options...
andrisp Posted August 9, 2008 Report Share Posted August 9, 2008 Nu jā, protams. Nolažoju. Link to comment Share on other sites More sharing options...
Mr.Key Posted August 9, 2008 Report Share Posted August 9, 2008 (edited) HTML filtrēšanai iesaku šito: http://htmlpurifier.org/ Ja html tiek aizliegts pilnībā, tad labāk vienkārši ar htmlspecialchars izvadīt < > tagus. Edited August 9, 2008 by Mr.Key Link to comment Share on other sites More sharing options...
shurix Posted November 26, 2008 Author Report Share Posted November 26, 2008 (edited) Vai shaada funkcija var pilnibaa pasargaat no sql injekcijaam? function stripinput($text) { $search = array("&", "\"", "'", "\\", '\"', "\'", "<", ">", " "); $replace = array("&", """, "'", "\", """, "'", "<", ">", " "); $text = str_replace($search, $replace, $text); return $text; } Edited November 26, 2008 by shurix Link to comment Share on other sites More sharing options...
bubu Posted November 26, 2008 Report Share Posted November 26, 2008 Nē, nevar. Bugi datubāzes kverija apstrādē var uztvert īpašus simbolus īpašā veidā. Piemēram \0 simbolu. Tā vietā lai pārvērstu simbolus uz to attiecīgajām html entītēm (kam tas vispār vajadzīgs sql injekciju apstrādei??) vajag lietot attiecīgo datubāzes piedāvāto stringu apstrādes funkciju. MySQL'am, piemēram mysql_real_escape_string() fju. Link to comment Share on other sites More sharing options...
shurix Posted November 26, 2008 Author Report Share Posted November 26, 2008 Taatad ja lieto mysql_real_escape_string() nav iespējama sql injekcija? Link to comment Share on other sites More sharing options...
Recommended Posts