Jump to content
php.lv forumi

Droša komentēšana


shurix

Recommended Posts

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 by shurix
Link to comment
Share on other sites

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

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 by shurix
Link to comment
Share on other sites

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

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 by Mr.Key
Link to comment
Share on other sites

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

  • 3 months later...

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 by shurix
Link to comment
Share on other sites

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

×
×
  • Create New...