高安全性的JavaScript
1、常见的Web前端攻击方式
目前,攻击网站前端的主要方式有如下几种:
1)XSS
XSS是Cross Site Scripting的缩写,即跨站点脚本攻击。XSS发生在用户的浏览器端,即当用户在加载HTML文档时执行了非预期的恶意脚本。XSS的特点就是:尽一切办法在目标网站上执行非目标网站上原有的脚本。
2)CSRF
CSRF是Cross Site Request Forgery的缩写,译为跨站请求伪造。请求是来源于其他网站的,即为跨站的请求。并且这个请求并不是来自于用户的意愿,而是伪造的请求,诱导用户发起的请求。
3)界面操作劫持
可分为点击劫持和拖动劫持两种。界面操作劫持是利用视觉欺骗,诱导用户操作。例如,在可见的输入框上覆盖一个不可见的框,用户点击输入框时,其实是点击了不可见框中的内容。
2、不要轻易信任任何外部传入的数据
防范前端攻击的一个重要常识:永远不要轻易相信用户输入的数据,一定要针对用户输入做相关的格式检查、过滤等操作,防止任何可能的前端注入。如下所列的是在前端开发中应用的具体实践方法。
1)不要轻易信任用户输入的内容
需要针对用户输入的内容进行HTML编码、<html>标签属性编码、JavaScript编码、CSS编码、URL编码。也应该避免使用一些有安全隐患的函数调用方式,比如避免使用eval、setInterval、setTimeout等函数直接运行输入的内容。
2)不要轻易信任任何传入的第三方数据
3)不要仅仅靠JavaScript代码来阻止注入
如果用户输入的数据要保存到后端数据库中,则仅仅靠JavaScript代码来校检用户输入的数据是不够的。在后端的代码也需要进行必要的数据校检操作,并且检查校检的力度要比前段要更严格。
3、其他前端安全防范实践
1)更安全的使用Cookie
避免泄露Cookie信息的有效方式是设置Cookie的HttpOnly,即禁止了对JavaScript操作Cookie。
另外一个和安全相关的设置,即Secure。设置了Secure的Cookie只能在浏览器使用HTTPS请求时被发送到服务器端。如果站点使用了SSL,则应该启用Cookie的Secure设置。
Cookie的另外两个常用的设置是domain(域)和path(路径),这两个设置是用来确定Cookie作用域范围的。
2)防止网页被其他网站内嵌为iframe
传统的方式是使用JavaScript代码来阻止网页被其他网页嵌套。
浏览器也支持通过设置X-Frame-Options响应头来控制页面被其他页面内嵌。X-Frame-Options有三种设置选项:DENY、SAMEORIGIN及ALLOW-FROM uri,分别表示禁止、允许相同域及特定域页面内嵌此页面。