这一节主要是讲线程安全的问题,考虑并发性。一个Web服务器总是同时服务很多人的,并且是同时处理很多的HTTP请求的,如果开发人员使用的变量不是线程安全的话,会存在并发带来的安全威胁。因为所有的线程共享同一个方法区,而所有的类变量都存储在方法区,多个线程试图同时使用相同的类变量,会造成错误。
Thread Safety Problems
线程的安全问题。假设有两个用户同时登陆一个网站查看自己的账户,如果他们在同一时间登陆的话,网站的反馈会发生错乱。该部分需要用两个浏览器,一个输入用户名“jeff”,一个输入用户名“dave”,如下图所示:
需要以尽可能快的速度同时点击“提交”按钮。
如图所示,两个人看到的都是jeff的账户,另一个dave的人却进入了jeff的账户。这是服务端并发性错误引起的。
Shopping Cart Concurrency Flaw
这是一个购物车的页面,需要我们以少的钱买高价值的商品。
首先用浏览器A,选择169美元的商品,并且点击购买,得到如下界面:
然后用浏览器B,选一个1799美元的商品,点击更新,浏览器B显示为这样:
此时浏览器A再点击确认就变成了这样:
说明对于浏览器A而言,他用169美元买了1799美元的商品。
这个原因在于浏览器B的更新时,浏览器A受影响了,服务器没有很好的处理多线程的问题。
Summarize
多线程和并发安全在网络安全中也是需要考虑的。
【版权声明】
本文首发于戚名钰的博客,欢迎转载,但是必须保留本文的署名戚名钰(包含链接)。如您有任何商业合作或者授权方面的协商,请给我留言:qimingyu.security@foxmail.com
欢迎关注我的微信公众号:科技锐新
本文永久链接:http://qimingyu.github.io/2016/05/05/Webgoat之Concurrency/