php過濾提交資料 防止sql注入攻擊

2021-06-20 16:40:06 字數 1101 閱讀 7198

規則 1:絕不要信任外部資料或輸入

關於 web 應用程式安全性,必須認識到的第一件事是不應該信任外部資料。外部資料(outside data) 包括不是由程式設計師在 php **中直接輸入的任何資料。在採取措施確保安全之前,來自任何其他**(比如 get 變數、表單 post、資料庫、配置檔案、會話變數或 cookie)的任何資料都是不可信任的。

例如,下面的資料元素可以被認為是安全的,因為它們是在 php 中設定的。

清單 1. 安全無暇的**

$myusername = 『tmyer』;

$arrayusers = array(』tmyer』, 『tom』, 『tommy』);

define(」greeting」, 『hello there』 . $myusername);

?>

但是,下面的資料元素都是有瑕疵的。

清單 2. 不安全、有瑕疵的**

$myusername = $_post[』username』]; //tainted!

$arrayusers = array($myusername, 『tom』, 『tommy』); //tainted!

define(」greeting」, 『hello there』 . $myusername); //tainted!

?>

解決方案很簡單:必須對 $_post[』username』] 執行清理**。如果不這麼做,那麼在使用 $myusername 的任何其他時候(比如在陣列或常量中),就可能汙染這些物件。

對使用者輸入進行清理的乙個簡單方法是,使用正規表示式來處理它。在這個示例中,只希望接受字母。將字串限制為特定數量的字元,或者要求所有字母都是小寫的,這可能也是個好主意。

清單 3. 使使用者輸入變得安全

$myusername = cleaninput($_post[』username』]); //clean!

$arrayusers = array($myusername, 『tom』, 『tommy』); //clean!

define(」greeting」, 『hello there』 . $myusername); //clean!

function cleaninput($input)

?>

對輸入進行長度限制和字元過濾,防止SQL注入

長度限制和字元過濾 sql注入攻擊的總體思路 發現sql注入位置 判斷伺服器型別和後台資料庫型別 確定可執 況 對於有些攻擊者而言,一般會採取sql注入法。下面我也談一下自己關於sql注入法的感悟。注入法 從理論上說,認證網頁中會有型如 select from admin where usernam...

php防止sql注入之過濾分頁引數例項

就網路安全而言,在網路上不要相信任何輸入資訊,對於任何輸入資訊我們都必須進行引數過濾。對此,我們先來看看下面的例項 複製 如下 this load library pagination config base url site url guest show config total rows c c...

php 防止mysql注入 php防止sql注入

三個函式 addslashes string 用反斜線引用字串中的特殊字元 username addslashes username mysql escape string string 用反斜槓轉義字串中的特殊字元,用於mysql query 查詢。username mysql escape st...