Jump to content
php.lv forumi

Recommended Posts

Posted (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 by shurix
Posted

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 \'.

Posted (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 by shurix
Posted

phpjanis nē, ievada datubāzē jau 100x pārbaudītus uz visādiem filtriem cauri izlaistus datus.

Posted
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!

Posted

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().

Posted

Nevis visam, bet gan string tipa datiem (vārdam, uzvārdam, ...) nevis citiem (id, skaits, numurs, ...), ja ir nofiltrēti skaitļi jau iepriekš.

  • 3 months later...
Posted (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 by shurix
Posted

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.

×
×
  • Create New...