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