数据安全

 

1、登录安全

用户登录是整体业务逻辑中重要的一环,又是最容易受到攻击的接口,所以确保登录安全,是公司整体业务逻辑中的重点;互联网泄漏的帐号密码量大约在1.5亿,当登录接口存在安全风险,撞库,扫号,破解密码等行为不禁会影响服务器性能,还会对用户造成极高的风险,重要业务会导致泄密事件的发生。

  • 错误的登录逻辑

    经过对登陆点的梳理,总结出现逻辑错误的类型总结

    a、登录页无验证码;

    b、验证码存储于cookie中;

    c、正确的验证码存在于页面隐藏域中,读取隐藏域,即可得到验证码;

    d、验证码与cookie值对应,当cookie值不变,验证码值不变

    e、验证码更新由客户端发起请求,客户端不发起请求,验证码可无限制使用

    f、验证码与帐号密码不在同一接口验证,导致验证码绕过

    g、验证码以简单变形形式存于cookie中(例:base64),解码后可获得验证码

  • 正确的登录逻辑 

    正确的登录逻辑应该由以下条件组成:

    a、用户名密码与验证码一起提交到登录验证接口;

    b、验证码错误返回提示验证码错误信息,并后台更新验证码

    c、用户名或密码错误,模糊提示,用户名或密码错误,更新后端验证码具体登录逻辑图如

数据安全_第1张图片

  • 特殊登录点安全控制

对于特殊登录点,例如ERP外部登录,email登录,登录,此类登录需要如下安全控制方式中的种配合,才能确保安全;例如email、、erp等重要系统,帐号密码一旦被破解,可能导致泄密,甚至危及内部网络的安全,所以特殊登陆点需要以下安全防护措施:

    a、验证码难度加强

    b、更加严格的登录策略

    c、登录成功后采用二次验证,例如手机短信验证

    d、硬件ukey登录

    e、采用动态令牌保护

2、HTTP传输安全

当HTTP传输与互联网中,所有中间承载网络及设备可以嗅探到传输过程,由于业务严重性及性能考虑,在不使用HTTPS传输的前提下,签名便预防数据传输中被修改

用户A用B用户架设无线热点发送如下请求 http://www.xxx.com/order.action?user=admin&orderid = 123  B用户抓包发现连接,修改orderid,便可查询其他订单信息,导致信息泄漏

当用户提交连接时,添加对数据验证KEY防止中间人修改相关连接

function key($user,$orderid)

{

$key = md5(md5(md5($user.'0=0+0=0'.$orderid)));return $ key;

}

?>

按照以上代码生成key,生成如下连接

http://www.xxx.com/order.action?user=admin&orderid = 123&key=

c6d41ec7a47d9b3f1345ded166e6eca5

中间人即使发现连接,也无法遍历所有订单号

3、Cookie安全

HTTP协议 HttpOnly属性

Cookie httponly,是设置COOKIE时,可以设置的一个属性,如果COOKIE没有设置这个属性,该COOKIE值可以被页面脚本读取。当攻击者发现一个XSS漏洞时,通常会写一段页面脚本,窃取用户的COOKIE,为了 增加攻击者的门槛,防止出现因为XSS漏洞导致大面积用户COOKIE被盗,所以应该在设置认证COOKIE时,增加这个属性。

response.setHeader("SET-COOKIE","ceshi=" + request.getParameter("cookie")+ ";HttpOnly");

HTTP协议 secure属性

Cookie http secure, 是设置COOKIE时,可以设置的一个属性,当cookie设置此属性后,只能在HTTPS传输中才能传输,否则不能传输,增加可cookie的安全性。

4、密码存储安全

单次MD5加密算法问题

MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于确保信息传输完整 一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍 已有MD5实现。

现在黑客会利用彩虹表和穷举算法,对于MD5加密的密码破解率相对较高,所以不建议采用单次MD5加密存储重要数据。

单次MD5加密攻击示例

某校园网络遭入侵,获取用户名及MD5加密密码,部分密码在网上彩虹表破解,破解概率75%重要数据加密中严谨使用单次MD5加密

BASE64编码安全

很多开发认为base64是加密方法,这是造成很多问题的原因,base64设计之初是为了字符编码,并不是加密,所以base64可以当作不是一眼就能看懂的明文。

Base64攻击示例

当某系统使用如下连接下载,为防止用户查看下载地址,错误的使用了base64编码下载地址,导致任意文件的下载,相关链接如下:

数据安全_第2张图片

数据安全_第3张图片

对于base64、escape、urlencode等编码不能当作加密算法使用,在应用中禁止自己编写加密算法,重要数据建议使用多次MD5加密、多次随机盐加密、或AES加密

随机加密算法(加盐法)

在重要数据存储时,用MD5加密、BASE64编码等方式存储均存在安全较大的安全隐 患,所以对于重要数据的存储、传输建议使用随机的加密方式。

随机函数用于加密其中方法非常多,组合法、跳变法、重排法、多模法,这里介绍一种方法:加盐法。

加盐法的最大特色是增加加密强度,它是一种动态方法。经过加盐处理可以做到,即使用同样的明文、同样的用户密码每次加密得到的密文都不一样,密码、明文、密文没有固定的对应关系,这样当然不好分析了。

你可能感兴趣的:(数据安全)