随着项目复杂度的提升以及用户体量的增大,前端安全变得越来越重要。平时系统运行正常,一旦出现安全问题,轻者部门扣分,严重的可能对公司造成严重损失。了解一些常见漏洞,平时coding时注意,防患于未然。
分类 | 特点 |
---|---|
跨站脚本攻击 | 任意内容在展示到页面之前,对内容中的特殊字符进行转义,避免产生XSS跨站脚本攻击等前端漏洞。 |
跨站请求伪造 | 网站必须部署防御 CSRF 攻击的解决方案,每个接口都需要校验 Referer 和 csrf_token。重要接口需要对重放攻击进行防御 |
服务端请求伪造 | 程序中如有对外发送请求的功能,必须严格限制发送的目标和内容的类型;对于只需要请求公网的功能点,必须限制其向内网发送请求。 |
任意文件读取 | 程序在读取本地文件时,需要对读取的目录范围和文件名称禁止限制,避免跨目录读取敏感文件; |
任意文件上传 | 若程序带有文件上传功能,必须在服务端代码中严格限制允许上传的文件类型;存放文件的目录需要与程序代码隔离 |
SQL注入 | 程序中应具有抵御SQL注入漏洞的能力。需采用预编译等方式执行数据库操作,禁止把传入参数直接拼接在SQL语句中。 |
命令注入 | 避免程序直接调用操作系统命令,在执行前必须检查命令中的是否有非法的特殊字符。 |
跳转漏洞 | 进行url跳转时,禁止跳转到其他非相关域名,含非公司域名及公司其他非相关业务域名 |
越权漏洞 | 在执行用户提交的操作前,必须校验提交者与操作目标的关系,禁止未经授权操作其它用户的数据,同时也需要避免普通用户执行管理员层级的操作,避免产生权限绕过、水平越权和垂直越权漏洞。 |
通过将恶意得Script代码注入到Web页面中,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
盗取账户,网站挂马,植入广告或垃圾信息,篡改页面等。
function htmlEncodeByRegExp (str){
var s = "";
if(str.length == 0) return "";
s = str.replace(/&/g,"&");
s = s.replace(/</g,"<");
s = s.replace(/>/g,">");
s = s.replace(/ /g," ");
s = s.replace(/\'/g,"'");
s = s.replace(/\"/g,""");
return s;
}
跨站点请求伪造漏洞:用户以当前身份浏览到flash或者第三方网站时,JS/flash可以迫使用户浏览器向任意CGI发起请求,此请求包含用户身份标识,CGI如无限制则会以用户身份进行操作。
危害为服务器代替攻击者发送一个外界不可达的请求(服务器本机或所处内网),导致安全边界内资产遭受攻击或者信息被暴露的漏洞,在庞大的内网环境下,ssrf被评为高危漏洞。
其他防御方式 更多漏洞待更新