本文目錄一覽:
- 1、php怎樣使用參數化防止sql注入
- 2、PHP定義一個函數,用參數化查詢防止注入。
- 3、ThinkPHP如何防止SQL注入?
- 4、php防止sql注入以及xss跨站腳本攻擊
- 5、php如何防止sql注入?
php怎樣使用參數化防止sql注入
可以使用php的pdo對象,有預處理查詢功能可以防止注入,再有,注入sql無非就是基於你sql的拼接問題影響的執行sql,也可以不用pdo預處理,把獲取查詢的參數裡面的非法字符比如單引號雙引號等這些字符手動過濾也可以的
PHP定義一個函數,用參數化查詢防止注入。
$filters = [
[“filter”=FILTER_SANITIZE_STRING],
[“filter”=FILTER_SANITIZE_STRING],
[“filter”=FILTER_VALIDATE_INT]
];
$b_result = filter_input_array($b,$filters);
ThinkPHP如何防止SQL注入?
(1)查詢條件盡量使用數組方式,這是更為安全的方式;
(2)如果不得已必須使用字符串查詢條件,使用預處理機制;
(3)使用綁定參數;
(4)強制進行字段類型驗證,可以對數值數據類型做強制轉換;
(5)使用自動驗證和自動完成機制進行針對應用的自定義過濾;
(6)使用字段類型檢查、自動驗證和自動完成機制等避免惡意數據的輸入;
(7)做一些過濾。
php防止sql注入以及xss跨站腳本攻擊
1.post數據
封裝轉義函數 防sql注入 eag:addslashes($username);addslashes($password);
eag:防止sql注入函數封裝
function deepslashes($data){
#判斷$data的表現形式 並且需要處理空的情況
if(empty($data)){
return($data);
}
#高級簡寫 return is_array($data) ? array_map(‘deepslashes’,$data) : addslashes($data);
#初級寫法
if(is_array($data)){
#遞歸循環遍歷處理多維數組
foreach ($data as $v) {
return deepslashes($v);
}
}else{
#單一變量
return addslashes($data);
}
#初級寫法
}
2.get數據
指url 傳參數導致sql發生改變
解決方案
①強制轉換,使用函數intval 或者 數據類型 的關鍵字int
②隱式轉換,通過運算,只需要+0即可
3.xss跨站腳本攻擊
指惡意攻擊向web頁面插入html、js標籤導致頁面出現錯誤
解決方案
轉義標籤” ”即可,有以下php函數可解決
htmlspecialchars 函數 和 htmlentites函數
eag:
function deepslashes($data){
#判斷$data的表現形式 並且需要處理空的情況
if(empty($data)){
return($data);
}
return is_array($data) ? array_map(‘deepslashes’,$data) : htmlspecialchars ($data);
}
php如何防止sql注入?
額,這是我老師給的答案\x0d\x0a \x0d\x0a答:過濾一些常見的數據庫操作關鍵字,\x0d\x0a select ,insert,update,delete,and,*等或通過系統函數addslashes對內容進行過濾\x0d\x0aphp配置文件中register_globals=off;設置為關閉狀態.(作用將註冊全局變量關閉);如接收POST表單的值使用$_POST[‘user’],假設設置為ON的話$user才接收值\x0d\x0asql語句書寫的時候盡量不要省略小引號(tab上面那個)和單引號\x0d\x0a提高數據庫命名技巧,對於一些重要的字段根據程序的特點命名,使之不易被猜中\x0d\x0a對於常的方法加以封裝,避免直接暴漏SQL語句\x0d\x0a開啟PHP安全模式safe_mode=on\x0d\x0a打開magic_quotes_gpc來防止SQL注入,默認為關閉,開啟後自動把用戶提交sql查詢語句進行轉換把”‘”轉換成”\'”\x0d\x0a控制錯誤信息輸出,關閉錯誤信息提示,將錯誤信息寫到系統日誌\x0d\x0a使用MYSQLI或PDO預處理
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/278894.html