查看纽约时报的this page:
http://homedelivery.nytimes.com/HDS/learnMorePopUp.do
?mode=common.learnMorePopUp
&productId=NDS
&prodRate=7.40
我很惊讶地看到,当我手动修改prodRate
参数时,页面已更新:
亲自试试吧!现在,我没有做太多的Web开发,但我知道这可能不应该发生。所以我想知道:
答案 0 :(得分:3)
他们可能只是在查询字符串中读取值以用于显示目的。我非常怀疑(或者更确切地说,希望)任何实际的订单处理都不是基于该值,而是基于使用产品Id的查找。
答案 1 :(得分:1)
嗯,你真的试过订购了吗?它可能会验证后端的输入。
至于其他选项,他们可以考虑发布信息或将信息放入cookie中。两者都不是完全傻瓜的证据。您无法使用帖子获得新窗口,用户可以关闭Cookie。
答案 2 :(得分:1)
你不能从那个页面订购,所以我在这里没有看到安全漏洞。是的,这是俗气的,但如果实际的订单流量如此糟糕,我会更加担心。它确实可以很容易地在一个地方更新速率并只传递值,所以我可以看到它是如何发生的。
我们有一些评级页面几乎完全相同。它们与实际购买流量无关,因此参数正常。如果客户希望通过编辑URL来混淆自己,那么就是......实际的订单流是所有数据库驱动的,用户编辑永远不会被信任。
答案 3 :(得分:1)
我发现了各种各样的坏习惯。我已经看到网站在Querystring中传递了整个SQL查询,然后执行。我还记得找到一个在querystring中通过价格的在线商店。我把一个改为负值,当然,在结账时价格是负的!我没有再进一步 - 技术上它是欺诈,不值得冒险。
答案 4 :(得分:1)
您可能想要重新解释您的问题,因为我能想到的唯一答案并不太明显:
问:什么样的实施会导致这种行为?问:您如何修改页面以隐藏最终用户的敏感参数?
答:不要以最终用户可编辑的方式存储值。如果服务器上有可用的存储(如Servlet引擎),则将其存储在会话上下文中。如果您没有良好的会话机制,可以将其存储在已签名或HMAC的cookie中。