前端安全
前端安全
为什么会跨域?
跨域问题是浏览器的同源策略导致的,同源策略是浏览器的一种安全机制,即进行资源请求时需要保证协议、域名、端口号都相同,否则就产生了跨域,是为了防止恶意的跨站脚本攻击。
如何解决跨域问题?
CORS(跨域资源共享):在服务端设置Access-Control-Allow-Origin等header,以允许跨域请求
JSONP:利用动态创建script标签,通过script.src实现跨域请求
Nginx反向代理:配置Nginx反向代理,将跨域请求转发到服务器
window.postMessage():HTML5提供的跨域通信API,允许窗口间的消息传递
websocket:websocket协议支持跨域通信
你知道哪些前端攻击?该如何预防?
xss
- Cross Site Script 跨站脚本攻击
- 手段:将 js 代码插入到网页内容中,渲染时执行 js 代码
- 预防:特殊字符替换(前端或后端)
- 输入检查,对于用户输入进行格式检查。
csrf
Cross Site Request Forgery 跨站请求伪造
手段:诱导用户去访问另一个网站的接口,伪造请求
预防:严格的跨域限制 + 验证码机制
csrf 详细过程
- 用户登录 A 网站,有了 A 网站的 cookie
- 诱导用户到 B 网站,并发起 A 网站的请求
- A 网站的 API 发现有 cookie,认为是用户自己操作的
csrf 预防手段
- 严格的跨域请求限制,如判断 referer(请求来源)
- 为 cookie 设置 SameSite,禁止跨域传递 cookie
- Chrome 51 开始,浏览器的 Cookie 新增加了一个 SameSite 属性,用来防止 CSRF 攻击 和用户追踪(第三方恶意获取 cookie),限制第三方 Cookie,从而减少安全风险。
- 关键接口使用短信验证码
- token 验证
点击劫持
- click jacing
- 手段:诱导界面上蒙一个透明 iframe,诱导用户点击
- 预防:让 iframe 不能跨域加载
- X-FRAME-OPTIONS 响应头是用来给浏览器指示允许一个页面可否在
<frame>,<iframe>或者<object>中展现的标记。网站可以使用此功能,来确保自己网站
内容没有被嵌到别人的网站中去,也从而避免点击劫持的攻击。
- X-FRAME-OPTIONS 响应头是用来给浏览器指示允许一个页面可否在
DDos
- Distribute denial-of-service 分布式拒绝服务
- 手段:分布式的、大规模的流量访问,使服务器瘫痪
- 预防:软件层不好做,需硬件预防(如阿里云 WAF)
SQL 注入
- 手段:提交内容时写入 SQL 语句,破环数据库
- 预防:处理输入的内容,替换特殊字符