先回顾一下今年来发生的由于互联网安全问题引发的事件
  · 2014年3月,携程网用户支付信息出现漏洞:漏洞泄露的信息包括用户的姓名、身份证号码、银行卡卡号、银行卡CVV码
  · 2014年5月,UC浏览器用户敏感数据泄漏的漏洞:只要用户通过UC浏览器搜索并登录人人、新浪微博等网站,其提交的用户信息和密码都有可能被黑客截取
  · 2014年5月,小米论坛存在用户资料泄露:泄露涉及800万小米论坛注册用户
  · 。。。。。
  那么造成这些问题的原因是什么呢? OWASP(The Open Web Application Security Project)的安全问题TOP10里,以下几个占比超过50%:
  sql注入:
  拖库
  通过技术手段,利用网站安全漏洞把服务器数据库中的数据全部或部分获取;网站越大,用户信息越多,拖库的影响越大,危害越大
  撞库
  很多用户在登录不同网站时为了图方便好记,往往喜欢用统一的用户名和密码,黑客把拖库取得的用户名及密码跟网络银行、支付宝、淘宝等有价值的网站进行匹配登录,这是“撞库”
  爆破
  俗称“暴力破解”或“爆破”,对已知的用户名,使用密码字典库暴力尝试、破解用户密码;如果网站不限制密码重试次数,被爆破成功的概率较高
  · 这里的拖库,是我们平时所说的sql注入,利用前端和后台的疏忽,将后台数据库中的数据全部拖出
  解决办法:
  1. 不要信任用户的输入,对用户的输入进行校验
  正则校验、长度限制、特殊字符转码(' --)
  2. 不要使用动态拼接SQL
  参数化sql、类型判定
  3. 不要使用管理员权限的数据库连接
  为每个应用开放有限的独立权限
  4. 数据库机密信息不要明文存储 加密、hash
  5. 异常信息不要直接返回给用户
  使用自定义的错误信息进行包装
  跨站脚本攻击(Cross Site Scripting)

  这里解释一下,因为跨站脚本攻击的缩写是CSS,为了与CSS区分,所以这里缩写为XSS
  攻击者向web页面里插入恶意html代码 用户浏览该页之时,嵌入其中的html代码会被执行 通常以获取用户cookie为目的 注入内容以javascript为主
  xss又分反射型和存储型,两者原理类似
  反射型xss的特点是请求即执行;而存储型xss的特点是先存储,再执行;
  大概过程可以用一张图概括
  解决办法:
  内容过滤:过滤关键字 "javascript..."
  转码:分号、<>...
  Cookie属性:Secure、http-only
  失效的身份认证和会话管理
  · 这类问题细分起来种类繁多,举几个有代表性的吧
  web应用在开发时,可能存在为了实现需求而自定义身份认证方式或会话管理方式,例:会话id存在url中,这样如果直接copy别人的url,那么可以直接使用这个人的账户信息;用户名、密码等信息cookie未设置过期时间,那么当他人登录同一客户端时,也可能会直接使用他人账户;
  解决办法:
  避免未经授权访问会话状态
  限制会话寿命
  对身份验证 cookie 的内容进行加密
  不要在网络上以纯文本形式发送密码