您的位置:首页 > 编程语言 > PHP开发

php session是否存在被破译的可能?

2015-12-22 13:05 393 查看
最近被一位做底层开发的大牛问到,我们系统如何保证用户的交易。经过深聊他告诉我 Session是可以被破译的,这个话深深的刺激到了我!因为我们系统用户验证通过后服务器会分配一个 Session ID作为用户已经登录的凭证。因为刚开始学的时候PHP教程也是这样教我们的,如果Session ID被破解这样用户可以畅通无阻这个系统。

于是带着问题请教了2位,技术主管。王兄,曹兄。第一位王兄告诉我的答案是这个你别担心了,Session存在服务器的不像cookie是存在客户端的,要是直接获取到那么就是服务器都被攻陷了。当然这样的情况我们是不会让他发生的,那么破解是否有可能?回答:破译也是非常非常小的概率,那几乎是不可能的事情。于是安慰我说这个问题就别想了,不存在。

带着疑问有问了曹兄,曹兄做PHP已经非常多年了,我和他说这个问题的时候,他也思考好像他那里也有这样的问题。于是他告诉我这个理论是存在这个情况的。具体截图给我分析如下图,用户登录验证后,PHP服务器会返回PHPSESSION 这个ID会存在浏览器中,和与服务器交互会回传。服务器在进行验证。如果用户知道PHPSESSION 并且可以模拟浏览器提交是不是就可以使用用户所有的操作。答案是:“对,完全存在这种可能!”,

如果是真能破解,我们有办法解决这个问题吗?

曹说避免这样的情况你可以用HTTPS加密协议来做这样安全点,然后在做客户端和服务器做双向安全证书(支付宝是这样干)这样就不存在被破译的事情了。



浏览器请求截图



服务器Session截图

如果被破解了,我们是有办法通过证书解决这个问题的。如果破解那么存在多少可能?

答案我们可以算算:

PHPSESSION=4airjpi4bfr1fpdfkkudfdc706

截图数据可以分析出,PHP应该是数字和字母组合并且是26位字符 这样组合出来就是

(26+10)^26=2.9e+40

一算40位小数的可能。我想PHP能大面积应用一定他也有安全的考虑?所以暴力破解看起来是很难讨到便宜。

服务器本身的防御是否可以抵挡这样攻击,我们也是算一下。目前我还没有做个特别大型的系统,按照极限情况来算,平均1秒内有1000用户同时访问(之前微信博文流量量最大估计也不超过这个数),我想那个时候服务器已经很吃力了,CPU可能已经吃到50%。首先服务器会扛不住哪样的破解,服务器会瘫痪,为了避免这个问题服务器一般都会有防CC攻击、DDoS攻击。下图为之前案例的防火墙设置,WEB请求60秒内允许120次,如果超过会禁用你这个IP。一般的破解防火墙也会过滤掉,讨不到什么便宜!!





综合分析:

一个程序与黑客之前的攻守是时时存在的,作为正面战场的程序员,需要建筑起自己的城堡,需要搭建出自己的帝国,需要付出非常多的艰辛,

但是黑客只需要找到一个漏洞,就可以打劫我们的粮仓,纵观整个发展,我愿意做建筑城堡的建筑人,不愿意做偷鸡摸狗的勾当,一个人有品德的程序员,

一定是做利人利己的事情。

感谢这位C语言大神给我指点,因为我们处的位置不一样,也给我一个很震撼的问题,让我思考,将来工作和生活中需要认真仔细,守好自己的一亩三分地,

守好自己的底线。以上所有观点均为个人,如果偏差,请大家多多指导一下。再次感谢每一位回帖的人。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: