我把一個網站放在一起,(我們已經使用javascript在客戶端進行預驗證)。但是在厭倦了每隔一行編寫mysql_real_escape_string之後。我寫了這個類,它只有兩個函數,主要集中在用戶輸入/ sql中清理數據。我的問題是,有哪些方法可以實現更簡單的輸入消毒,同時提高代碼可讀性?什麼是改善我的PHP數據衛生課程的方法?
<?php
class Safe {
function userinput($string){
$string = strip_tags($string);
$string = htmlspecialchars($string);
return $string;
}
function sql ($string){
$sqlstuff = Array("union", "select", "update", "delete", "outfile", "create");
$string = Safe::str($string);
$string = mysql_escape_string($string);
$string = str_ireplace($sqlstuff, "", $string);
return $string;
}
}
?>
看起來像從sql替換那些常見的單詞將導致您的問題取決於客戶端發送什麼。不過,我會建議使用SQL抽象層(如PDO),並使用它的佔位符能力來執行SQL衛生。 (strip_tags仍然是一個好主意) – Cfreak 2011-02-16 22:01:33