Html 任何人都可以更改<;输入>;金额价值?

Html 任何人都可以更改<;输入>;金额价值?,html,Html,在我的网站上,我有一个结账页面,一旦客户输入了他们的卡的详细信息,他们只需点击“立即付款”。它不是贝宝按钮 在我确认他们的订单之前我不会收费,只需点击一下就可以接受他们的订单 我的问题是:他们能简单地更改输入标记并将值设置为0而不支付任何费用吗 请看一下这个: <input type="hidden" id="total-cost-val" value="3.85"> <input name="/atg/commerce/order/purchase/CommitOrderFo

在我的网站上,我有一个结账页面,一旦客户输入了他们的卡的详细信息,他们只需点击“立即付款”。它不是贝宝按钮

在我确认他们的订单之前我不会收费,只需点击一下就可以接受他们的订单

我的问题是:他们能简单地更改输入标记并将值设置为0而不支付任何费用吗

请看一下这个:

<input type="hidden" id="total-cost-val" value="3.85">
<input name="/atg/commerce/order/purchase/CommitOrderFormHandler.commitOrder" value="Pay now" class="place-order" type="submit">    
<input name="_D:/atg/commerce/order/purchase/CommitOrderFormHandler.commitOrder" value=" " type="hidden">
<input name="/atg/commerce/order/purchase/CommitOrderFormHandler.formName" value="paymentForm" type="hidden">
<input name="_D:/atg/commerce/order/purchase/CommitOrderFormHandler.formName" value=" " type="hidden">
<input name="/atg/commerce/order/purchase/CommitOrderFormHandler.commitOrderSuccessURL" value="" type="hidden">
<input name="_D:/atg/commerce/order/purchase/CommitOrderFormHandler.commitOrderSuccessURL" value=" " type="hidden">
<input name="/atg/commerce/order/purchase/CommitOrderFormHandler.commitOrderErrorURL" value="" type="hidden">
<input name="_D:/atg/commerce/order/purchase/CommitOrderFormHandler.commitOrderErrorURL" value=" " type="hidden">
<input id="jsEnableCheck" name="/atg/commerce/order/purchase/CommitOrderFormHandler.jsCheckForCheckout" value="true" type="hidden">
<input name="_D:/atg/commerce/order/purchase/CommitOrderFormHandler.jsCheckForCheckout" value=" " type="hidden">

这是我担心的第一句话——我不是程序员,我没有做到这一点,我只是从谷歌Chrome的“Inspect Element”功能复制过来的

他们能否使用“编辑为HTML”将
value=“3.85”
更改为
value=0


如果这样做有效吗?

一般来说,客户端计算机上运行的任何东西都可能被客户端入侵,尤其是HTML

您可以做的一件事是,在服务器上为该事务创建guid(或其他标识符),并使用另一个输入:

<input type="hidden" id="transaction-id" value="127819A3-C0FB-404F-BFF8-D4FA2C4240EA"/>

然后将信息保存在服务器上,这样,如果他们修改了该值,他们就不太可能将其转换为有效的交易,因此他们将被困在实际金额中


旁注:如果是XHTML,则需要在标记末尾加斜杠:

作为一般规则,客户端计算机上运行的任何东西都可能被客户端入侵,尤其是HTML

您可以做的一件事是,在服务器上为该事务创建guid(或其他标识符),并使用另一个输入:

<input type="hidden" id="transaction-id" value="127819A3-C0FB-404F-BFF8-D4FA2C4240EA"/>

然后将信息保存在服务器上,这样,如果他们修改了该值,他们就不太可能将其转换为有效的交易,因此他们将被困在实际金额中


旁注:如果这是XHTML,则需要在标记末尾加斜杠:

是的,这是可能的。一般来说,当有人在修改了你的结构或者甚至没有使用你的结构后发送帖子时,你需要时刻做好准备

这就是验证应具有3个级别的原因:

  • 客户端验证:这应该作为Javascript代码在浏览器中运行,并通过确保只向服务器发送有效请求来防止无效表单提交浪费您的资源
  • 应用程序端验证:应在服务器端运行,并应执行与客户端验证大致相同的操作,以便防止黑客将无效请求发送到表单外部
  • 深度验证:当且仅当请求通过前两个级别时,才应达到此级别,此时您应运行数据库。检查

因此,客户端验证可以防止服务器处理用户发送的无效请求。应用程序端阻止服务器对明显的黑客企图进行深入分析。深入分析是验证的最后一步。如果一个请求值得达到这个级别,甚至通过了,那么该请求是正确的。

是的,这是可能的。一般来说,当有人在修改了你的结构或者甚至没有使用你的结构后发送帖子时,你需要时刻做好准备

这就是验证应具有3个级别的原因:

  • 客户端验证:这应该作为Javascript代码在浏览器中运行,并通过确保只向服务器发送有效请求来防止无效表单提交浪费您的资源
  • 应用程序端验证:应在服务器端运行,并应执行与客户端验证大致相同的操作,以便防止黑客将无效请求发送到表单外部
  • 深度验证:当且仅当请求通过前两个级别时,才应达到此级别,此时您应运行数据库。检查

因此,客户端验证可以防止服务器处理用户发送的无效请求。应用程序端阻止服务器对明显的黑客企图进行深入分析。深入分析是验证的最后一步。如果某个请求值得达到此级别,甚至通过了,则该请求是正确的。

可以在发送表单值之前更改表单值,是的

为了防止这种情况发生,只需在执行交易之前检查服务器上的交易,确认金额以及您收集的任何其他详细信息是否正确,并且只有在您手头有明确的、可信任的确认,即您使用的任何服务已经支付了款项时,才能履行订单


如果金额与您对服务/产品的期望不符,或者付款没有通过,只需向用户返回一个适当的错误,以及下一步操作的说明等

可以在发送表单值之前更改表单值,是的

为了防止这种情况发生,只需在执行交易之前检查服务器上的交易,确认金额以及您收集的任何其他详细信息是否正确,并且只有在您手头有明确的、可信任的确认,即您使用的任何服务已经支付了款项时,才能履行订单

如果金额与您对服务/产品的期望不符,或者付款没有通过,只需向用户返回一个适当的错误,以及下一步操作的说明等

他们可以使用“编辑为HTML”将“value=“3.85”更改为value=0吗

是的,我可以(我通常使用firebug做类似的事情,通过将输入类型从“password”->“text”更改为了解我保存的密码)

如果是这样的话,这行得通吗

是的,它有效。因为当我提交表单时,它只检查当前输入的值。它将其视为从内存位置获取值


所以, 永远不要相信我(客户方)。如果可能的话,我甚至可以通过Facebook提交谷歌表单。