Webgoat之Concurrency

这一节主要是讲线程安全的问题,考虑并发性。一个Web服务器总是同时服务很多人的,并且是同时处理很多的HTTP请求的,如果开发人员使用的变量不是线程安全的话,会存在并发带来的安全威胁。因为所有的线程共享同一个方法区,而所有的类变量都存储在方法区,多个线程试图同时使用相同的类变量,会造成错误。

Thread Safety Problems

线程的安全问题。假设有两个用户同时登陆一个网站查看自己的账户,如果他们在同一时间登陆的话,网站的反馈会发生错乱。该部分需要用两个浏览器,一个输入用户名“jeff”,一个输入用户名“dave”,如下图所示:
1

需要以尽可能快的速度同时点击“提交”按钮。
2
如图所示,两个人看到的都是jeff的账户,另一个dave的人却进入了jeff的账户。这是服务端并发性错误引起的。

Shopping Cart Concurrency Flaw

3
这是一个购物车的页面,需要我们以少的钱买高价值的商品。
首先用浏览器A,选择169美元的商品,并且点击购买,得到如下界面:
4

然后用浏览器B,选一个1799美元的商品,点击更新,浏览器B显示为这样:
5

此时浏览器A再点击确认就变成了这样:
6

说明对于浏览器A而言,他用169美元买了1799美元的商品。
这个原因在于浏览器B的更新时,浏览器A受影响了,服务器没有很好的处理多线程的问题。

Summarize

多线程和并发安全在网络安全中也是需要考虑的。


【版权声明】
本文首发于戚名钰的博客http://qimingyu.github.io/ ),欢迎转载,但是必须保留本文的署名戚名钰(包含链接)。如您有任何商业合作或者授权方面的协商,请给我留言:mingyuqi.java@qq.com
欢迎关注我的微信公众号:科技锐新

本文永久链接:http://qimingyu.github.io/2016/05/05/Webgoat之Concurrency/

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章