如何绕过人们改变表单提交方法



我有以下HTML

<form action="/home" method="post">
    <input type="hidden" name="_method" value="POST">
    <input type="text" name="var">
    <button type="submit">Submit</button>
</form>

在服务器端,我根据我得到的请求类型触发不同的操作。_method隐藏字段控制该动作。用户不仅可以将值更改为DELETE并引起混乱吗?我在本地Apache服务器上尝试了它,它确实实际上触发了删除路由,这可能是灾难性的。

我也知道我不是唯一使用此练习的人,因为我在各种框架的官方文档上看到了它,所以我缺少什么?

您可以使用:

检查服务器上的方法名称
<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
    // collect value of input field
}
else{
   // Do nothing
}
?>

注意:更改"获取",如您所见。

note2: $ _server [" request_method"]由服务器生成。用户无法编辑它。因此,您可以使用此变量检查哪种请求(获取,发布,放置,...)。

希望它能帮助您!

最新更新