本文章转载于搜狗测试
先回顾一下今年来发生的由于互联网安全问题引发的事件
·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 的内容进行加密
不要在网络上以纯文本形式发送密码