Web 应用程序的当前趋势似乎是对所有内容都使用 GET 请求。具体来说,使用描述服务、命令及其参数的 RESTful URL。几个月前,Jeff Atwood 发布了 XSS 的危险。他展示了即使允许用户在您的网站上发布像“img”标签这样看似无害的东西也可能导致 XSS 漏洞。原因是浏览器会盲目地请求“src”属性中的 url,这可能会做一些令人讨厌的事情,比如注销用户,或者更不祥的事情。
十年前我第一次开始做 Web 开发时,传统的看法是对于表单总是偏爱 POST 而不是 GET,并且服务器端的应用程序需要 POST 来提交表单,正是这个原因。浏览器一直发送 GET 请求(就像前面提到的“img”标签示例),但它们只在某些情况下发送 POST 请求(特别是“method”属性设置为 POST 的表单)。通过要求 POST,您似乎可以消除大部分 XSS 攻击。这是偏爱他们的正当理由吗?