Session Cookie without Secure flag set 不安全的cookie使用
由于没有对cookie的使用做限制, 导致JS可以获取cookie,从而造成用户信息泄露引起的XSS攻击。
//JS操作
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
//PHP处理
function cookie_httponly() {
if (version_compare(PHP_VERSION, '5.2', '<')) {
header("Set-Cookie: hidden=value; httpOnly");
} else {
ini_set("session.cookie_httponly", 1);
// or
//session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
}
}
Login page password-guessing attack 密码猜测暴力破解攻击
由于没有对登录做限制(验证码验证等)和登录失败处理(操作一定次数限制登录)。导致恶意用户可以频繁转库,造成用户信息泄露。
处理方式:添加验证码、限制同一账号失败多次禁止短期访问。
Cross site scripting 跨站脚本攻击
① 禁止对未处理的变量做URL拼接 如 $_SERVER['REQUEST_URI']
② 将请求参数转换为相应的数据类型和敏感字符过滤,避免SQL注入
③ 使用过滤后的变量处理。避免拼接未处理的变量造成安全隐患
Application error message 应用程序错误消息
严格限定数据类型,如对查询字段构造为数组变量将会造成系统报错 ?search[]=
Clickjacking: X-Frame-Options header missing 点击劫持漏洞
处理方式 禁止站点内的页面被其他页面嵌入,从而防止点击劫持。
1. DENY 禁止被任何网站嵌入
2. SAMEORIGIN 可以被同源网站嵌入
3. 限制级别 ALLOW-FROM 允许被嵌入 如 https://example.com/
//PHP代码演示
header("X-Frame-Options:SAMEORIGIN");