网站安全笔记
最近非常时期,几个zf的网站接到了漏洞检测机构的安全评估报告,要求我们去修复潜在漏洞。
1、密码字段自动完成处于活动状态
<input type="password" placeholder="密码" autocomplete="off"/>
2、X-Frame-Options Header未配置
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
X-Frame-Options 有三个值:
DENY表示
该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN表示
该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri表示
该页面可以在指定来源的 frame 中展示。
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。
配置 Apache
配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置 nginx
配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-OptionsSAMEORIGIN;
配置 IIS
配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ... </system.webServer>PHP的方式
header('X-Frame-Options: SAMEORIGIN');ASP的方式
Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
3、会话Cookie中缺少HttpOnly属性
基本上,cookie的唯一必需属性是“name”字段,必须设置“HttpOnly”属性,才能防止会话cookie被脚本访问。
PHP中的设置
PHP5.2以上版本已支持HttpOnly参数的设置,同样也支持全局的HttpOnly的设置,在php.ini中
-----------------------------------------------------
session.cookie_httponly =
-----------------------------------------------------
设置其值为1或者TRUE,来开启全局的Cookie的HttpOnly属性,当然也支持在代码中来开启:
-----------------------------------------------------
<?php ini_set("session.cookie_httponly", 1);
// or session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
?>
-----------------------------------------------------
Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项,开启方法为:
-------------------------------------------------------
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
-------------------------------------------------------
对于PHP5.1以前版本以及PHP4版本的话,则需要通过header函数来变通下了:
-------------------------------------------------------------
<?php header("Set-Cookie: hidden=value; httpOnly"); ?>
ASP的设置
Response.AddHeader "Set-Cookie", "mycookie=yo; HttpOnly"
如果是thinkPHP框架的话
修改配置文件:
3.2.2版本:'COOKIE_HTTPONLY' => 'httponly', // Cookie的httponly属性 3.2.2新增
5.0版本:'httponly' => 'httponly',
4、关于电话号码
用图片代替,手机号局部用*代替,或者直接忽略。
还有就是要控制好上传文件的权限问题,不能执行asp、php、jsp等文件。控制好图片上传的判断