0x01 XSS
1.过滤特殊字符(XSS Filter)
过滤恶意标签+属性
(1)href伪协议
<a href=javascript:('/a/')>test</a>
(2)HTML新增标签
<math><maction xlink:href=>、<embed src=>
(3)利用DataUrl协议
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=">
2.使用实体化编码
(1)HTML编码
编码前 编码后
& &
< <
> >
“ "
‘ ' '
/ /
(2)Javascript编码
编码前 编码后
‘ \’;
“ \”;
\ \\;
/ \/;
3.Http Only
PHP下通过修改php.ini的session.cookie_httponly=true
0x02 CSRF
1.添加中间环节
(1)添加验证过程
在执行关键操作的时候,让用户进行二次确认或重新输入一次密码。
(2)添加验证码
2.对请求进行校验
(1)referer
(2)csrf token
添加一个有较强随机性,一次性的token进行校验。
0x03 SSRF
1.双向过滤用户端参数
黑名单限制如file、gopher等协议。
2.网络限制
对服务器能访问的内网地址及端口进行最小化限制。
0x04 SQL
1.参数过滤或编码
select、union、order by等sql查询函数。
‘、“、;、&等特殊符号。
2.预编译与参数绑定
(1)在客户端进行预编译和参数绑定
(2)在服务端进行预编译(存储过程),在客户端进行参数绑定
当绑定的参数是可选的字段时,例如表名称、列名称、排序方式等,而非用户输入的内容,是不可以使用参数绑定的。
3.白名单
对不可做参数绑定的,可限制输入内容为预先设置好的几个值,如果不是就返回错误。
ps:宽字节注入修复:1.将mysql_set_charset设置为gbk编码;2.character_set_client 设置为binary(二进制)。
0x05 文件上传
1.文件类型检测
(1)文件扩展名
推荐使用白名单方式。
(2)文件MIME类型
通过改Content-Type非常容易绕过。
2.文件内容检测
(1)文件头检测
图片马可绕过。
(2)图像二次渲染
通过对上传的图片进行二次渲染,调整大小,然后再采集图片输出为文件。
3.文件解析攻击
(1).htaccess
<FilesMatch “jpg”>SetHandler application/x-httpd-php#将jpg后缀的文件解析为php
仅对当前目录设置htaccess,不对网站下所有文件夹做设置。
(2)apache
a.php.txt.jpg->a.php
升级apache版本
(3)iis
a.asp;.jpg->a.asp
升级iis版本
(4)php
nginx,iis7.0/7.5
a.jpg/b.php->a.php
升级php版本
0x06 文件包含攻击
1.检测被包含文件的后缀
对包含的文件后缀进行黑白名单校验。
2.检测被包含文件的目录
利用配置文件中对用户可访问的目录进行限制。php open_base_dir
3.升级PHP版本
all_url_include=off;
0x07 命令执行攻击
1.PHP环境下的命令执行
在php.ini中通过设置disable_functions()禁用exec()、system()、shell_exec()等危险函数。
2.框架类的命令执行
如struts2,thinkphp,建议升级版本。
(struts2目前受影响是2.3-2.3.24,2.5-2.5.16,安全一些的是2.3.35或2.5.17以上。18年给的漏洞修复建议,仅供参考。)
3.中间件类的命令执行
如Weblogic、Jboss,及时打补丁。
0x08 明文传输
对传输的用户名、密码进行加密。(MD5)
0x09 暴力破解
1.添加强度较高的验证码,不易被破解。
2.修改密码设置规则,提高用户的密码强度。
3.同一账号登陆次数锁定,生成锁定日志。
4.定期排查弱口令。
0x10 水平越权&垂直越权
在参数可控的情况下,通过session验证个人身份是否与用户修改后的代表身份的信息匹配,若不匹配禁止访问。
0x11 弱验证码
1.更改验证码的类型,由数字转为点击或拖动类型的图形验证码。
2.设置验证码的刷新频率,保证每一次提交后验证码刷新一次。
3.限制验证码的有效期,半分钟或一分钟后自动刷新。
0x12 敏感信息泄露
屏蔽网站后台、中间件后台、网站或程序报错信息,删除备份文件、测试文件。
网站的Banner(服务器版本、端口、开发语言)信息泄露,参考:
https://blog.csdn.net/hibari_18/article/details/104904387
0x13 XML注入、XPATH注入、LDAP注入、JPA注入
1.使用标准的xml解析库进行xml文件的写操作。
2.对插入的数据进行编码、过滤。
3.JPA可通过参数绑定的方式防止注入的产生。