我在php中使用html表格如下:
<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
.
.
</form>
但是当我测试CSRF / XSS攻击时,注入此页面非常容易。 有什么好方法可以防止这种攻击吗?
答案 0 :(得分:3)
对于CSRF保护 -
对于XSS保护 -
答案 1 :(得分:1)
防止CSRF的唯一安全方法是将密钥(csrf令牌)与每个请求相关联,然后在表单提交时进行检查。你可以把它放在一个隐藏的输入中。
答案 2 :(得分:-1)
主要防御:
选项#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