当用户保存为当前表单页面时,如何验证流程页面


How do I validate process page when user save as current form page?

  1. 示例形式,https://stackoverflow.com/questions/ask我保存了这个页面到桌面
  2. 然后我将action="/questions/ask/submit"编辑为完整的URL并提交

问题

在流程表单上,如果出现这种情况,我如何验证submit流程是否会返回错误页面或被拒绝?

如果我正确理解你的问题,你想阻止某人从外部网站(而不是你的服务器)提交表单。

解决方案非常简单,向访问表单页面的人添加一个会话变量,然后在处理程序页面上进行检查。如果有人没有正确的会话变量,那么请求就会被拒绝。

根据评论进行编辑

产品的价格是而不是用户输入。它不是由用户输入的东西,而是由服务器确定的东西。你不应该有一个包含产品价格的隐藏输入。只有产品ID,并从数据库中获取价格。

听起来您想要防止跨来源请求伪造。OWAST有一张关于这个问题的备忘单。简短的版本是:将随机生成的令牌存储在用户的会话(或cookie)和表单中。如果提交的令牌与存储的令牌不匹配,则拒绝提交。

这只对第三方诱骗访问者向您的网站提交数据有效。您无法阻止用户提交任意数据。最接近这一点的是确保用户有权做他们想做的任何事情(例如,如果他们提交了编辑id为23的内容的请求,那么在允许编辑完成之前,请检查他们是否有权编辑id 23)。

回应评论的更新:

是的,有时用户会编辑隐藏输入的值。让我们说金额之前重定向到支付页面等

用户无法选择他们应该支付的金额,因此不要将支付金额放入表单数据中。将要订购的商品的ID和每个商品的数量放在服务器上,然后计算成本。