在Web应用程序中执行某些操作的安全方法

时间:2013-01-08 17:15:23

标签: web-applications security

在黑客攻击中,我发现了以下内容:

<input type="hidden" value="1500" name="price">

如果您足够聪明以更改值(由Web应用程序的客户端强加)...您可以更改项目的价格。 我想知道..我可以让这行代码更安全吗?我想你应该把服务器端的价格作为一个开始......如何处理这样一个问题的任何建议都非常受欢迎......非常感谢..

3 个答案:

答案 0 :(得分:0)

不要将其包含在客户端。为什么价格必须是客户端,而不是首先向用户显示? (实际上,客户可以获得价格是没有害处的......你希望你的客户看到价格,但实际上 信任 是愚蠢的价格是准确的,并没有被篡改。

处理订单中的商品时,您应该根据ItemId查询价格,而不是接受客户的价格。任何客户端数据都会自动被视为不受信任,应进行验证。在上下文中,假设这是一个项目并且您单击“添加到购物车”选项,接受隐藏字段值是合适的价格将是愚蠢的。 在这种情况下,验证它意味着不仅要确保它是十进制数,还要确保实际价格。

相反,该项目应具有ID,并且服务器端的调用将使用该ID在Products表中查找价格,并使用从Products表中检索的验证价格。

即使您要加密价格,也必须假设它已被篡改。这是在初始设计阶段应该实现安全性和常识的明显情况之一。如果是这样的话,那些事情就不会成为代码。


所有这些都表明,在那里存在与订购流程无关的合法商业理由。也许开发团队希望通过隐藏字段公开它。如果他们希望价格可以通过javascript或其他东西读取,那么让它可用是有意义的......例如,对于客户端功能,可以在数量改变时调整它。我不确定我会这样做,但在那种情况下,它没有任何伤害。

答案 1 :(得分:0)

通常,您会在网页上显示价格,以便用户可以知道他们支付的金额,但最终确定的价格仍然来自服务器上的价格数据库。

如果您有很多价格变动,您可以这样做,以便在用户查看价格和点击购买时价格发生变化时通知用户。

如果最终价格包含在网页中,它只是邀请人们设定自己的价格。如果你打算这样做,你也可以做广告并获得额外的业务这样的功能意味着。

如果您是黑客,我建议您戴上白帽并通过电子邮件向网站所有者发送电子邮件,让他们知道自己有问题。

答案 2 :(得分:0)

我看过这个黑客的版本,价格设定为负数;当推车总计,这意味着黑客可以得到免费的东西。

例如,如果页面允许您设置电视的价格 - £5,000,那么我可以将5,001英镑的商品添加到我的购物车中,并且只需支付您的网站£1

它无助于解决您的问题,但正如此处的其他帖子所说,您真的不应该信任来自您网页的价格。当您计算任何价格时,您应该从您的产品数据库中获取价值,希望那里没有产品价格为 - £5,000 ......