Jump to content
php.lv forumi

mysql_real_escape_string vai htmlspecialchars


Morphius

Recommended Posts

Tātad vadoties pēc virsraksta...kas ir drošāks saistībā ar SQL injekcijām? Vai arī abas funkcijas vienlīdz labas?!

Ja nemaldos šajā forumā lasīju ka visos gadījumos labāk izmanotot mysql_real_escape_string() nekā piemēram addslashes() vai ko tamlīdzīgu.

 

Kā tur īsti ir?

Edited by Morphius
Link to comment
Share on other sites

tās ir divas dažādas funkcijas.

 

htmlspecialchars() lieto datu izvadei, piemēram, lai nebūtu negaidīts script lapā, vai kāds </div> un tml, kas mēdz sačakarēt lapu

 

mysql_real_escape_string() lieto kverijā darbojoties ar datiem

Edited by yeahz
Link to comment
Share on other sites

tās ir divas dažādas funkcijas.

 

htmlspecialchars() lieto datu izvadei, piemēram, lai nebūtu negaidīts script lapā, vai kāds </div> un tml, kas mēdz sačakarēt lapu

 

mysql_real_escape_string() lieto kverijā darbojoties ar datiem

 

Man tomēr ir vēlēšanās oponēt...

 

Ja es izmantoju mysql_real_escape_string() funkciju pirms datu ievadīšanas, tad tekstam tiek piemesti sleši pie katrām pēdiņām un kad izmantoju htmlspecialchars($str, ENT_QUOTES) funkciju pie izvades, tad simbols " ' " tiek aizvietots ar "\ 039; " simboliem, respektīvi slešs tāpat paliek un tad jāizmanto vēl funkcija kas novāc slešu. BET, ja izmanto tikai htmlspecialchars($str, ENT_QUOTES) pie datu ievades iekš DB, tad bāzē tiek ievadīti " 039; " simboli un nekādas funkcijas ar slešu pievienošanu vai noņemšanu nav vajadzīgas.

Bet jautājums bija par šo funkciju drošu izmantošanu. Vai var izmantot pie datu ievades htmlspecialchars($str, ENT_QUOTES) un tad nevajag satraukties par datu izvadi jo $str ir noformatēts droši?!

Vai tomēr labāk izmantot mysql_real_escape_string() un tad pie izvades stripslashes($str)?

Edited by Morphius
Link to comment
Share on other sites

pēc mysql_real_escape_string() db nekādi slashi netiek ievadīti. slashi ir redzami tikai kverijā, bet tā kā tas ir escape simbols, tam ir speciālā nozīme. tie nav dati, tāpēc izvadot nekādu stripslashes() nevajag lietot

Edited by 2easy
Link to comment
Share on other sites

pēc mysql_real_escape_string() db nekādi slashi netiek ievadīti

 

Nu paga, paga...tie sleši tiek pievienoti un to ka tos slešus pievieno magic_qutes vai kas cits, tad tā jau ir problēma...paskatījos funkciju get_magic_quotes_gpc nozīmi, kura pārbauda vai magic_qutes ir on vai off.

 

Tātad jautājums, vai nav vieglāk izmantot htmlspecialchars($str, ENT_QUOTES) funkciju pirms datu ievades un tad nav lieki jāsatraucas par slešu klātbūtni? vai labāk izmantot get_magic_quotes_gpc kura pārbauda ir ieslēgts vai izslēgts magic_quotes un veikt nepieciešamos mērus?!

Un vispār posta fiška ir tāda...kas ir drošāk? Izmantot slešus, vai izmantot simbolu kopumu (& quot;) vai ( 039;) attiecīgi (") un (')?

 

PS

Varbūt ir situācijas kad labāk izmantot slešus un situācijas kad labāk izmantot html simboliku?

Edited by Morphius
Link to comment
Share on other sites

Morphius, mysql_rea.. ir tieši domāts lai liekot datus kvērijā, nevarētu veikt sql injekcijas. šī funkcija nemaina datus.

 

htmlspecial.. domāts lai pataisītu datus par ne-html. Dati tiek MAINĪTI. Pamatdoma ir glabāt datus datubāzē tādus, kādi tie ir, un tikai drukājot ārā tos apstrādāt attiecīgi videi - html vai ne-html.

Link to comment
Share on other sites

Īsumā:

mysql_real_escape - domāts aizsardzībai pret SQL injekcijām - pret sliktām lietām, ko kāds var nodarīt datu bāzei

htmlspecialcharacters - domāts aizsardzībai pret XSS/CI utt - pret sliktām lietām, ko var kāds nodarīt klientam pārlūkā

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...