前天,我在博客园发布了一个知名电商网站的cookie漏洞,引起了园友们的热议。学到了很多知识,现在整理一些比较激烈的技术讨论。谁对谁错?每个人心中都有一种感觉。很多时候,我说服不了你,你也说服不了我。话题一:网友:HTTPS是安全的,cookies等数据在传输过程中被有效加密,所以https站点下的cookies也是安全的;me:https下的cookies在传输过程中是安全的,但是在客户端就不安全了,有用户和黑客在使用客户端;我的论点:假设我在某网站A下登录我的账号,打开浏览器cookie,发现有这么一个user=batsing,然后我会想如果我改变usercookie的值改成别人的用户名,可以直接登录别人的帐号吗?如果服务端程序直接根据cookie值来考虑用户,那么这样的做法是非常可行的。我的建议:无论是否使用SSL,cookie值都必须经过高强度、难以破解的加密算法处理。话题二:网友:哈希算法用在加密领域是值得信赖的。I:哈希算法用在加密领域是不可靠的。我的论点:1、哈希算法生成的密文具有明显的特征,可以被黑客破解。指示的方向。哈希算法生成的密文是所有数字加上纯小写字母(或纯大写),MD5为32位,SHA1为40位,SHA-256为64位,SHA-512为128位。2、哈希算法已有大量彩虹表和数据库作为破解工具,破解难度大大降低,安全性存疑。我的建议:所有的密文都应该使用没有明显特征且不易被破解的算法进行加密。推荐使用AES加密算法。PS:之前不知道有AES算法的时候,混合使用了SHA1、字符串截取和Base64处理,一看就很难破解(包含数字,大小写,可能有符号←_←).总结:1.Cookies使用安全;2、现在几乎每个月都会暴露出几个安全问题,我们程序员一定要提高安全意识;相关安全问题:一、注册/登录表单的密码安全方案1、使用SSL使表单信息在传输过程中处于密文状态,被拦截后仍难以破解使用;解决方案2、使用安全控件,比如银行网页和一些大型电商网页,在客户端加密,然后加密。传播;方案3,使用JS加密密码,然后在服务器端解密,但是由于JS是可见的,所以加密算法也是可见的,所以JS文件本身也需要加密压缩,难以读取;2、字符串加密方案1、多个网站使用的Multiplehashencryption;(不推荐)方案2,AES加密;方案三,结合现有的加密函数和自己编写的一些字符处理方法;三、Cookie记录用户应包含和验证的原始数据信息1、用户名√用于识别用户身份2、浏览器信息√用于防止某些黑客直接从电脑浏览器窃取手机cookies3、IP地址ㄨPC可以用手机不能用,手机IP经常变4.时间戳?使用取决于具体的算法。如果cookie密文无法还原出原文的时间戳,则无法验证时间戳的有效性;如果可以恢复,那么后台就可以判断这个cookie在指定时间内是有效的(注意这里的有效期和通常的cookie有效期是一样的)不同的是,通常有效期是会过期会被浏览器清空,但这里是说被盗的cookie在一定时间后后台程序不会识别)5.有没有办法获取和使用更多的独立信息,***是绑定的到设备。比如MAC地址,比如手机的序列号。6.一般网站可以使用cookies来提高用户的便利性。但由于被盗用的风险较大,建议不要对与金钱直接相关的网站/页面使用cookies。如何让别人复制cookie后无法登录,目前还没有想到更好的解决办法,请指教。
