[英]PHP Safe way to put URL in form to protect against from xss / cross site request forgery CSRF attack
我在php中使用html表單,如下所示:
<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
.
.
</form>
但是,當我測試CSRF / XSS攻擊時,很容易插入此頁面。 有什么好的方法可以防止此類攻擊?
對於CSRF保護-
對於XSS保護-
防止CSRF的唯一安全方法是將秘密密鑰(csrf令牌)與每個請求關聯,然后在提交表單時對其進行檢查。 您可以將其放在隱藏的輸入中。
主要防御措施 :
選項1:使用預備語句(參數化查詢)
選項2:使用存儲過程
選項3:轉義所有用戶提供的輸入
其他防御措施 :
同時執行:最小權限
還執行:白名單輸入驗證
對於選項#3,請使用以下功能:
要使用mysqli_real_escape_str函數,您需要mysqli,才能在codeigniter中獲取它
function get_mysqli() {
$db = (array)get_instance()->db;
return mysqli_connect('localhost', $db['username'], $db['password'],$db['database']);
}
public function filter($data)
{
$data = trim(htmlentities(strip_tags($data)));
// print_r($data);
if (get_magic_quotes_gpc()){
// print_r($data);
$data = stripslashes($data);
// print_r($data);
$data = mysqli_real_escape_string(get_mysqli(),$data);
// print_r($data);
}
return $data;
}
將用戶輸入循環為:
foreach($_POST as $key => $value) {
$array[$key] = $this->filter($value);
}
看一下這個:
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.