action="/questions/ask/submit"
修改为完整网址并提交。问题
在流程表单上如何验证submit
进程是否会返回错误页面,如果出现这样的情况则会被拒绝?
答案 0 :(得分:2)
听起来你想要阻止cross-origin request forgery。 OWAST在这个问题上有一个cheat sheet。简短版本是:将随机生成的令牌存储在用户的会话(或cookie)和表单中。如果提交的令牌与存储的令牌不匹配,则拒绝提交。
这仅对诱骗访问者向您的网站提交数据的第三方有效。您无法阻止用户提交任意数据。你最接近的是确保用户有权做他们想做的事情(例如,如果他们提交了编辑id为23的请求,那么检查他们是否有权编辑id 23之前允许编辑完成。)
回复评论时更新:
是的,有时用户将编辑隐藏输入的值。让我们说在重定向到付款页面等之前的金额
用户无法选择应支付的金额,因此请勿将付款金额放入表单数据中。将所订购项目的ID和每个项目的数量放在一起,然后计算服务器上的成本。
答案 1 :(得分:2)
如果我正确理解了您的问题,您希望阻止某人从外部网站(而非您的服务器)提交表单。
解决方案非常简单,向访问表单页面的人添加会话变量,并在处理程序页面上检查它。如果某人没有正确的会话变量,那么该请求将被拒绝。
产品的价格不用户输入。它不是用户输入的东西,而是服务器确定的东西。您不应该有包含产品价格的隐藏输入。只有产品ID,并从数据库中获取价格。