2006-04-05

[PHP] SQL インジェクション 対策

いまのところ受け取る値を無害化するので一番いいのはこれかなあ。

$sqlstr = preg_replace(array('/[~;\'\"]/','/--/'),'',$val);

1.「;」「'」「"」を削除
2.「--」を削除(※「-」は削除しない)

before --> = 2006-03-25 and tast = 10 and 1=1; delete from t_table;- --

after --> = 2006-03-25 and tast = 10 and 1=1 delete from t_table-

もっといいの知ってたら教えてください。

<?php
function inject_4SQL($val,$vartyp='str')
{
    switch (
$vartyp) {
    case 
'int':
        
$sqlstr intval($val);
        break;
    case 
'dbl':
        
$sqlstr doubleval($val);
        break;
    default:
        
$val preg_replace(array('/[~;\'\"]/','/--/'),'',$val);
        
$sqlstr addslashes($val);
    }
    return 
$sqlstr;
    }    
?>
コメントを投稿