开年遇到的第一个问题就是解决XSS攻击>_<,可见要时刻保证网站的安全性相当重要。作好网站安全,不只维护网站的稳定性,更保证用户数据的一致性。对此,总结一下笔者在工做中遇到的安全问题以及防护方法。
前端中常见的两种网站应用安全漏洞攻击的方式是 XSS 与 CSRF,本文详细介绍两种攻击方式的概念、原理以及防护方式。javascript
XSS(Cross-site scripting)跨站脚本攻击是恶意用户在网站中注入的脚本,当正经常使用户打开网站时受到影响并可能获取用户cookie等信息一种安全攻击行为。常见的例子是用户进入某个网站的时候一直弹出alert
框等。
常见的 XSS 方式分为两类:持久性和非持久性,也有机构将其分为传统型(由服务器端代码缺陷引发)和基于 DOM 型(有客户端引发)。下面介绍三种类型:前端
<script>alert(document.cooke)</script
并不会执行 script 中的代码,须要构造对应事件触发。如: <img src="xxx.jpg" width="0" height="0" border="0" onload="javascript:alert(document.cookie);">
?userName=<img onload="javascript:alert(document.cookie)"/>
)的查询参数来显示用户名等。针对 XSS 攻击,常常有如下两个方式来进行防护:java
function escHTML(str) { if (!str) return ''; return str.replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/x27/g, ''') .replace(/x22/g,'&quto;'); }
CSRF(Cross-site request forgery)是一种攻击,迫使用户在受信任网站上执行不须要的一些操做。具体过程以下:git
针对 CSRF 攻击,经常使用的防护方式以下:github
function getToken (token) { var str = token || ''; var hash = 5381; for (var i = 0, len = str.length; i < len; ++i) { hash += (hash << 5) + str.charCodeAt(i); } return hash & 0x7fffffff; }
具体攻击示例点击查看数据库