Real escape string
 
nextgen 23. dec 2011 21:33:02 Pridružen od:
3. nov 2011
26 objav
44 12 0
#11

Weby:

This extension is not available anymore on Windows with PHP 5.3 or later.

Se pravi, da tudi to ne bo šlo =)




Spodaj pod tem besedilom je prav lepo opisano, kaj naj se uporabi namesto tega extension-a.

Najboljsa varjanta je tole: http://www.php.net/manual/en/ref.pdo-sqlsrv.php

ce pa tega ne mores prepricati, da to deluje kot bi moralo, potem se uporabi tole: http://www.php.net/manual/en/ref.pdo-odbc.php



Ce je le mozno, se poizkusi izogniti filtrom, saj ne filtrirajo samega vpisa v bazo in s tem ponujajo varnostno luknjo.


všeč(1) ni všeč(0) spam(0)
 
Weby 23. dec 2011 21:49:18 Pridružen od:
30. apr 2008
770 objav
120 21 2
#12

nextgen: Hvala, ravno preizkušam :)

Malo sem pobrskal še po digitalpoint forumu in našel tole. Zanima me še vaše mnenje.


function mssql_escape_string($data) {
if(!isset($data) or empty($data)) return '';
if(is_numeric($data)) return $data;
$non_displayables = array(
'/%0[0-8bcef]/',
'/%1[0-9a-f]/',
'/[\x00-\x08]/',
'/\x0b/',
'/\x0c/',
'/[\x0e-\x1f]/'
);
foreach($non_displayables as $regex)
$data = preg_replace($regex,'',$data);
$data = str_replace("'","''",$data);
return $data;
}
všeč(0) ni všeč(0) spam(0)
No Packages marked for Update
 
nextgen 23. dec 2011 21:56:53 Pridružen od:
3. nov 2011
26 objav
44 12 0
#13

Weby:


function mssql_escape_string($data) {
$non_displayables = array(
'/%0[0-8bcef]/',
'/%1[0-9a-f]/',
'/[\x00-\x08]/',
'/\x0b/',
'/\x0c/',
'/[\x0e-\x1f]/'
);
}



Tale del zna delati tezave z UTF-8 znaki. Tako da bodi previden.


všeč(1) ni všeč(0) spam(0)
 
technolog 26. dec 2011 11:42:22 Pridružen od:
14. nov 2011
598 objav
768 300 22
#14

Potem ti pa svetujem tole predelano alernativo:




  1. Inicializiraj $novString;

  2. Beri znak po znak z mb_substr(), shrani v $c

  3. Če je ta znak strlen($c)==1 (enobiten), potem poglej, če ord($c) matcha katero izmed escape sequenc.

  4. Če ne, potem ga dodaj v $novString.=$c.

  5. Če je $c==" ' ", potem$novString.=" ' ' " (odstrani presledke, dal sem jih zaradi berljivosti)



V tem primeru pridobiš na UTF-8 podpori in se izogneš regex "čungalungam". V točki 3. lahko dodaš podporo tudi za večbitne non-printable znake, vendar Weby-eva funkcija tako ali tako tega ne dela.


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
Weby 26. dec 2011 11:51:12 Pridružen od:
30. apr 2008
770 objav
120 21 2
#15

technolog: Hvala, bomo sprobali :)



Do sedaj sem se igral z PDO in nastalo je tole



try{

$pquery=$db->prepare('SELECT test FROM test WHERE test = :name');

$pquery->execute(array(

':name'=>$_POST['name']

));

while ($result = $pquery->fetchObject()) {

echo $result->test;

echo "<br />";

}



}catch(PDOException $e) {

echo 'Error : '.$e->getMessage();

exit();

}



Bo takole v redu ali je treba še kakšno zadevo dodati oz. spremenit?


všeč(0) ni všeč(0) spam(0)
No Packages marked for Update
 
nextgen 26. dec 2011 23:39:57 Pridružen od:
3. nov 2011
26 objav
44 12 0
#16

Error check. Kaj se zgodi, ce $_POST['name'] ne obstaja?


všeč(0) ni všeč(0) spam(0)
 
technolog 26. dec 2011 23:56:31 Pridružen od:
14. nov 2011
598 objav
768 300 22
#17

No, tudi če ne, se ne bo svet podrl.


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
nextgen 27. dec 2011 00:31:24 Pridružen od:
3. nov 2011
26 objav
44 12 0
#18

technolog:

No, tudi če ne, se ne bo svet podrl.




V tem primeru bi me bilo groza uporabljati tvojo kodo.

Ce ne zaradi drugih razlogov, nebi hotel imeti v logu miljon E_NOTICE-ov.


všeč(0) ni všeč(0) spam(0)
 
technolog 27. dec 2011 06:46:12 Pridružen od:
14. nov 2011
598 objav
768 300 22
#19

No, jasno, ampak varnostna luknja pa to ni.


všeč(0) ni všeč(0) spam(0)
Z linuxom že 7 let. Pro web development.
 
nextgen 27. dec 2011 07:34:37 Pridružen od:
3. nov 2011
26 objav
44 12 0
#20

technolog:

No, jasno, ampak varnostna luknja pa to ni.




Zanic izgovor za pisanje zanic kode. Kar nekaj delodajalcev, s katerimi sem delal bi te odpustilo zaradi takega argumenta.

Ali pisi dobro kodo ali jo pa sploh ne.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se