热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

web漏洞预防指南

在web安全中,不仅要知道如何对目标进行渗透,还要知道如何预防漏洞及这些漏洞的解决办法。xss1、允许的位置外,不要插入不受信任的数据。2、在将不受信任的数据插入之前进行HTML实

在web安全中,不仅要知道如何对目标进行渗透,还要知道如何预防漏洞及这些漏洞的解决办法。


xss

1、允许的位置外,不要插入不受信任的数据。

2、在将不受信任的数据插入之前进行HTML实体编码,

3、使用HTTPOnly COOKIE标志

4、实施内容安全策略


SQL注入

1、使用全局过滤器,过滤特殊字符,正确处理数据类型。包括但不限于以下字符及字符串:

select and or like regxpfrom where update exec order by having drop delete ( ) [ ] <> , . ; : '" # % + - _ = / * @

2、预编译 SQL 语句,而不要动态组装 SQL 语句,否则必须确保在使用输入的数据组装成SQL 语句之前,对特殊字符进行预处理。

3、以最小权限执行 SQL 语句。

4、 屏蔽错误回显。


不安全的直接对象引用

1、验证一切来自客户端的参数,重点是和权限相关的参数,比如用户ID或者角色权限ID等。

2、session ID 和认证的token做绑定,放在服务器的会话里,不发送给客户端。

3、对于用户登录后涉及用户唯一信息的请求,每次都要验证检查所有权,敏感信息页面加随机数的参数,防止浏览器缓存内容。


CSRF跨站请求伪造

1、在请求地址中添加 token 并验证。

2、识别来源(通过Origin / Referer头)

3、敏感操作需要验证码,更改密码需要验证老密码。

4、 在HTTP头中自定义属性并验证。


敏感信息泄露

1、屏蔽敏感信息,数据返回包去掉不必要的敏感信息。

2、用户密码等敏感信息,不要存储在前端。


任意文件上传

1、检测上传元信息。

2、服务器端严格校验文件后缀。

3、根据业务,正确放回响应头(Content-Type)。

4、校验上传文件的内容。


服务端请求伪造攻击SSRF

1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

2、禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题

3、设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)

4、限制请求的端口为http常用的端口,比如 80、443、8080、8090

5、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。


XXE

1、检查所使用的底层xml解析库,禁止外部实体的解析

2、使用第三方应用代码及时升级补丁

3、同时增强对系统的监控,防止此问题被人利用


路径遍历

1、过滤\,..,/,等危险字符。

2、过滤返回敏感信息。


越权操作

1、权限控制。

2、需登录的系统,页面的权限不可含空用户。

3、增加身份认证。


暴力破解

1、 添加操作的次数限制。

2、最ip进行限制


参考链接

http://netsecurity.51cto.com/art/201407/445018.htm

https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.md

http://www.lofter.com/lpost/1f350fa3_eea709e2


推荐阅读
author-avatar
树上的女爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有