Parameters 违反Web开发规则

Parameters 违反Web开发规则,parameters,url-parameters,Parameters,Url Parameters,从《纽约时报》查看: http://homedelivery.nytimes.com/HDS/learnMorePopUp.do ?模式=普通。learnMorePopUp &productId=NDS &prodRate=7.40 我惊讶地发现,当我手动修改prodRate参数时,页面更新了: 介绍性订阅率 定期订阅率 你自己试试吧!现在,我还没有做太多的web开发,但我知道这可能不应该发生。所以我想知道: 什么样的实现会导致这种行为 您将如何修改页面以对最终用户隐藏此类敏感参数 他们可

从《纽约时报》查看:

http://homedelivery.nytimes.com/HDS/learnMorePopUp.do
?模式=普通。learnMorePopUp

&productId=NDS

&prodRate=7.40

我惊讶地发现,当我手动修改
prodRate
参数时,页面更新了:

  • 介绍性订阅率
  • 定期订阅率
你自己试试吧!现在,我还没有做太多的web开发,但我知道这可能不应该发生。所以我想知道:

  • 什么样的实现会导致这种行为
  • 您将如何修改页面以对最终用户隐藏此类敏感参数

他们可能只是为了显示而直接从查询字符串中读取值。我非常怀疑(或者更确切地说,我真的希望)任何实际的订单处理都不是基于该值,而是基于使用产品Id的查找。

他们可能只是出于显示目的从查询字符串中读取值。我非常怀疑(或者更确切地说,我真的希望)任何实际的订单处理都不是基于该值,而是基于使用产品Id的查找。好吧,您是否确实尝试过订购它?它可能会验证后端的输入


至于其他选择,他们可以考虑发布信息或将信息放入cookie中。两者都不是绝对可靠的。您无法获得包含帖子的新窗口,用户可以关闭Cookie。

那么,您是否确实尝试过订购它?它可能会验证后端的输入


至于其他选择,他们可以考虑发布信息或将信息放入cookie中。两者都不是绝对可靠的。您无法获得包含帖子的新窗口,用户可以关闭cookies。

您无法从该页面订购,因此我没有看到安全漏洞。是的,这很俗气,但如果实际的订单流构建得如此糟糕,我会更加担心。它确实可以很容易地在一个地方更新速率并传递值,这样我就可以看到它是如何发生的


我们有一些评级页面,它们的功能几乎相同。它们没有连接到实际的采购流程,所以参数是可以的。如果客户端想通过编辑URL来混淆自己,那么就这样吧。。。实际的订单流都是数据库驱动的,用户编辑永远不可信。

您不能从该页面订购,因此我没有看到安全漏洞。是的,这很俗气,但如果实际的订单流构建得如此糟糕,我会更加担心。它确实可以很容易地在一个地方更新速率并传递值,这样我就可以看到它是如何发生的


我们有一些评级页面,它们的功能几乎相同。它们没有连接到实际的采购流程,所以参数是可以的。如果客户端想通过编辑URL来混淆自己,那么就这样吧。。。实际的订单流程都是由数据库驱动的,用户编辑永远不可信。

我发现了各种这样的错误做法。我见过网站在Querystring中传递整个SQL查询,然后执行这些查询。我还记得在querystring找到一家网上商店,它通过价格传递信息。我把一个值改为负值,果然,结账时的价格是负数!不过我没有再进一步——从技术上讲,这是一种欺诈,不值得冒险。

我发现了各种像这样的糟糕做法。我见过网站在Querystring中传递整个SQL查询,然后执行这些查询。我还记得在querystring找到一家网上商店,它通过价格传递信息。我把一个值改为负值,果然,结账时的价格是负数!不过,我没有进一步说明——从技术上讲,这是欺诈行为,不值得冒险。

您可能需要重新表述您的问题,因为我能想到的唯一答案并不太有启发性:

问:什么样的实现会导致这种行为?
答:一种允许用户输入控制内部可信行为的方法。如果你问“为什么有人会这样做”,我通常认为这是一种误解。代码作者通常没有意识到用户可以(a)控制值和/或(b)甚至发现它的存在。最常见的情况是,我将其视为重定向—单击一个按钮,服务器确定数量,然后将浏览器重定向到维护该值的新页面

问:您将如何修改页面以对最终用户隐藏此类敏感参数?

答:不要以最终用户可编辑的方式存储值。如果服务器上有可用的存储(如Servlet引擎),请将其存储在会话上下文中。如果您没有良好的会话机制,可以将其存储在签名或HMAC'd cookie中。

您可能需要重新表述您的问题,因为我能想到的唯一答案不是很有启发性:

问:什么样的实现会导致这种行为?
答:一种允许用户输入控制内部可信行为的方法。如果你问“为什么有人会这样做”,我通常认为这是一种误解。代码作者通常没有意识到用户可以(a)控制值和/或(b)甚至发现它的存在。最常见的情况是,我将其视为重定向—单击一个按钮,服务器确定数量,然后将浏览器重定向到维护该值的新页面

问:您将如何修改页面以对最终用户隐藏此类敏感参数?

答:不要以最终用户可编辑的方式存储值。如果服务器上有可用的存储(如Servlet引擎),请将其存储在会话上下文中。如果您没有良好的会话机制,可以将其存储在签名或HMAC'd cookie中。

但是,修改后的页面怎么办?它看起来不像