为什么不应使用 GET 提交表单

sam*_*ami 3 php forms security post get

我有一个使用 GET 提交的表单,这意味着数据会附加到 URL 中。该表单使用安全令牌进行保护。

我总是被告知表单应该通过 POST 提交。就我而言,如果使用 GET 提交表单会发生什么?那里有什么安全风险?

Dav*_*mas 5

真正的风险是,用户能够准确地看到哪些参数正在提交到您的服务器,并且不仅可以为该 URL 添加书签(以重新提交),还可以修改该 URL 以将其他可能无意义的参数提交到您的服务器端脚本。

在某些情况下这是可取的(例如 Google 使用 GET 以便可以为搜索添加书签),但在其他情况下这会带来风险(例如登录表单)。

在您自己的情况下,这取决于“安全令牌”的性质,以及该令牌对您的站点/应用程序的用户可见(且可修改)的潜在危害。但值得注意的是,即使您使用 POST 提交表单,这在提交页面的 html 源代码中也可见。

根据服务器端脚本收到数据时发生的情况,您还应该清理提交的信息,以减少 SQL 注入的范围,等等(+1 @Switz