乐趣区

网站常见安全问题记录(持续更新)

说明
初衷:
本文档用于记录所遇到的网站安全问题,并分类汇总,方便后期遇到类似问题,能够快速找到解决方案,提高效率,让程序员有更多的时间去把妹,LOL…
记录规范:

标题必须清晰明了,方便用户快速查找,拒绝标题党;
问题放到正确的分类中;
记录问题的时候先阐述问题,再列出解决方法,尽量做到有图有真相;
如果有对应的资料,可以附上链接;
记录问题提交人,方便追踪

Apache
Cookie 缺少 HttpOnly、Secure 标识
漏洞提示

描述
httponly 是微软对 cookie 做的扩展,这个主要是解决用户的 cookie 可能被盗用的问题。大家都知道,当我们去邮箱或者论坛登陆后,服务器会写一些 cookie 到我们的浏览器,当下次再访问其他页面时,由于浏览器回自动传递 cookie,这样就实现了一次登陆就可以看到所有需要登陆后才能看到的内容。也就是说,实质上,所有的登陆状态这些都是建立在 cookie 上的!假设我们登陆后的 cookie 被人获得,那就会有暴露个人信息的危险!当然,想想,其他人怎么可以获得客户的 cookie?那必然是有不怀好意的人的程序在浏览器里运行!如果是现在满天飞的流氓软件,那没有办法,httponly 也不是用来解决这种情况的,它是用来解决浏览器里 javascript 访问 cookie 的问题。试想,一个 flash 程序在你的浏览器里运行,就可以获得你的 cookie 的!
修复方案
一、修改 php 配置文件 php.ini
注意:YNCMS 勿改此项,其程序内部提供支持,按照第二种方案修改即可
session.cookie_secure = 1
session.cookie_httponly = 1

二、修改网站 cookie 配置文件,以 YNCMS 为例,修改 /Application/Home/Conf/config.php,添加配置参数
‘COOKIE_SECURE’ => true, // cookie 启用安全传输
‘COOKIE_HTTPONLY’ => true, // httponly 设置

参考资料:http://www.jb51.net/article/1…
cgi-bin 目录问题
暴力解决办法:注释掉对应信息
apache icons 目录问题
我们如果使用了 apache 服务器,当我访问 http://xxx.xxx.xxx/icons/ 时会自动显示这个目录下的所以文件列表,这行造成网站目录信息的泄露对我们的网站安全造成威胁,在 关闭 apache 自动目录列表功能的三种方法 这篇文章中的三种方法都不能禁止自动目录列表,你如果使用网站安全监测,会提醒你发现目录启用了自动目录列表功能,所以我们必须禁止它,经过测试,按如下步骤可以禁止:
打开目录 apache/conf/extra/ 下的文件 httpd-autoindex.conf(位置可能有差异)找到
Alias /icons/ “/xampp/apache/icons/”

<Directory “/xampp/apache/icons”>
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
去掉 Indexes 改成
<Directory “/xampp/apache/icons”>
Options MultiViews
AllowOverride None
Require all granted
</Directory>
重启 apache 服务器!
暴力解决办法就是注释掉或者直接删除 icons 目录
启用了 OPTIONS 方法
在网站根目录目录下创建.htaccess 文件,内容如下,如果您已有其他规则,请添加到第一条规则
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(OPTIONS)
RewriteRule .* – [F]
使用 Apache 的重写规则来禁用 Options 方法和 Trace 方法
在 Apache 配置文件 httpd-conf 中【vhosts-conf】添加以下代码:
单独禁用 Trace 方法:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* – [F]
单独禁用 Options 方法:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(OPTIONS)
RewriteRule .* – [F]
同时禁用 Trace 方法和 Options 方法
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* – [F]
<VirtualHost *:80>
DocumentRoot “D:\wwwroot”
ServerName www.abc.com
ServerAlias abc.com
<Directory “D:\wwwroot”>
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* – [F]
</Directory>
</VirtualHost>
启用了 TRACE Method
同启用了 OPTIONS 方法处理方法相同 RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) 或者在 httpd.conf 中添加配置:TraceEnable off
X-Frame-Options 头未设置
在 httpd.conf 里面增加 Header always append X-Frame-Options SAMEORIGIN
关闭目录浏览权限
描述
<Directory “/var/www/html”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
options 中 Indexes 表示当网页不存在的时候允许索引显示目录中的文件
解决
将要设置的目录对应配置参数下的 Indexes 删除或者改为 -Indexes(低版本可能会报错)
<Directory “/var/www/html”>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
或者
<Directory “/var/www/html”>
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

缺少 ”x-content-type-options” 头
在 httpd.conf 里面增加 Header always set X-Content-Type-Options nosniff
其他
允许 Flash 文件与任何域 HTML 页面通信
描述

解决方法
将参数 AllowScriptAccess 设置为 never
&#65279 导致页面空行
描述:
页面的编码如果是 UTF-8 + BOM,会在 body 开头处加入一个可见的控制符,导致页面头部会出现一个空白。这种编码方式一般会在 windows 操作系统中出现,比如记事本编辑器,在保存一个以 UTF- 8 编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即 BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以 UTF- 8 编码。对于一般的文件,这样并不会产生什么麻烦。但对于 html 来说,BOM 是个大麻烦。因为浏览器在解析 html 页面时,并不会忽略 BOM,所以在解析 html 文件时,会把 BOM 作为该文件开头正文的一部分,这串字符也将会被直接执行(在页面中并不显示)出来。由此造成即使页面的 top 或者 padding 设置为 0,也无法让整个网页紧贴浏览器顶部,因为在 html 一开头有这 3 个隐藏字符!
解决办法:
保存文件为 utf-8
建议不要用记事本打开开发文件

退出移动版