Web 安全总结(面试必备良药)

前端桃园

共 4457字,需浏览 9分钟

 · 2019-12-18

9cc94a8f1d3a1c7ab971d4c2209845c5.webp

点击上方蓝色字体,关注我啦~~

本文介绍以下几种常见的 web 安全问题及解决方法:

  • 同源策略

  • XSS

  • CSRF

  • SQL注入

  • 点击劫持

  • window.opener 安全问题

  • 文件上传漏洞


同源策略

如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。

  • 同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。

  • 同源策略限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。

  • 同源策略限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点。

解决同源策略的方法:

  • 跨文档消息机制:  可以通过 window.postMessage 的 JavaScript 接口来和不同源的 DOM 进行通信。

  • 跨域资源共享(CORS):   跨域资源在服务端设置允许跨域,就可以进行跨域访问控制,从而使跨域数据传输得以安全进行。

  • 内容安全策略(CSP):  主要以白名单的形式配置可信任的内容来源,在网页中,能够使白名单中的内容正常执行(包含 JS,CSS,Image 等等),而非白名单的内容无法正常执行。


XSS,跨站脚本攻击(Cross Site Scripting)

存储型 XSS 攻击

利用漏洞提交恶意 JavaScript 代码,比如在input, textarea等所有可能输入文本信息的区域,输入等,提交后信息会存在服务器中,当用户再次打开网站请求到相应的数据,打开页面,恶意脚本就会将用户的 Cookie 信息等数据上传到黑客服务器。

反射型 XSS 攻击

用户将一段含有恶意代码的请求提交给 Web 服务器,Web 服务器接收到请求时,又将恶意代码反射给了浏览器端,这就是反射型 XSS 攻击。
在现实生活中,黑客经常会通过 QQ 群或者邮件等渠道诱导用户去点击这些恶意链接,所以对于一些链接我们一定要慎之又慎。

Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是和存储型 XSS 攻击不同的地方。

基于 DOM 的 XSS 攻击

基于 DOM 的 XSS 攻击是不牵涉到页面 Web 服务器的。它的特点是在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据。比如利用工具(如Burpsuite)扫描目标网站所有的网页并自动测试写好的注入脚本等。

预防策略:

  1. 将cookie等敏感信息设置为httponly,禁止Javascript通过document.cookie获得

  2. 对所有的输入做严格的校验尤其是在服务器端,过滤掉任何不合法的输入,比如手机号必须是数字,通常可以采用正则表达式.

  3. 净化和过滤掉不必要的html标签,比如