作者:树上的女爷 | 来源:互联网 | 2023-09-08 11:40
在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