【发布时间】:2011-05-06 06:44:35
【问题描述】:
在评估表单是否已提交时,我会检查该方法是 post,而不是 get。有人告诉我这是一个很好的方式来知道表单是通过单击提交按钮提交的,而不仅仅是由在 url 中传递数据的脚本提交的。
“put”方法怎么样。它似乎与“post”非常相似。能或多或少地代替“post”而不损失“post”所提供的好处吗?
【问题讨论】:
-
Errmm... 以下是不正确的:“有人告诉我这是一个很好的方法,可以知道表单是通过单击提交按钮提交的,而不仅仅是由脚本提交的在 url 中传递数据。”请参阅 Wikipedia 上的 CSRF:“使用 HTTP 指定的 GET 和 POST 用法,其中 GET 请求永远不会产生永久影响,这是一种很好的做法,但不足以阻止 CSRF。攻击者可以编写 JavaScript 或 ActionScript 以不可见的方式提交 POST 表单到目标域。”
-
@Pekka,我现在不太关心浏览器的兼容性。我更关心之后的舞台。例如,如果它受支持并且浏览器可以检测到它,那么在安全方面,Web 应用程序本身会发生什么。看跌期权是否比帖子弱,或者它们或多或少相同?
-
@thejh,好的,你把我带到了那里。假设表单有一个“csrf”令牌并以这种方式受到保护,那么你会使用 get 吗?我想不是。你仍然会使用一个帖子。不知道为什么,但每个人都同意表单应该使用 post 方法提交,而不是 get。
-
PUT 是上传文件的旧方法,因为 GET 是获取数据的旧方法。这是在 HTTP 中替换资源的标准方法。
标签: php security forms post httpverbs