【问题标题】:MVC HttpGet and HttpPostMVC HttpGet 和 HttpPost
【发布时间】:2016-06-30 10:52:36
【问题描述】:

最近我参加了一个 mvc 培训。培训师说 - 根据安全问题,我们必须使用 HttpPost 而不是 HttpGet。始终使用 HttpPost。

谁能解释一下 - 我们使用 HttpGet 时的安全问题是什么?

【问题讨论】:

  • 使用 GET 进行操作的风险是:yoursite/somepage?action=deleteEverything">Click here! 此外,离开页面然后按浏览器的后退按钮
  • 查看这篇文章以获取有关该主题的一些信息stackoverflow.com/questions/2080863/…
  • HttpGet 只能与从地址栏调用的 url 一起使用。所有的按钮和链接点击都应该使用 HttpPost 调用。 Bcoz 例如:'www.users.com/user/getinfo/4' 获取 id 4 的数据。在这种情况下,用户只需将不同的 id 传递给 url,即可轻松获取其他用户的数据。
  • 我仍在试图弄清楚为什么这个问题被否决了?这是关于 GET 和 POST 如何真正在后台工作的常见误解。来自 WebForms 的很多人都处理了所有事情,当他们切换到 MVC 时,就像被交给了 Lambo 的钥匙一样,他们不知所措。

标签: c# asp.net-mvc


【解决方案1】:

当通过安全连接 (https) 传输数据时,post 请求的正文已加密且几乎不可读,您只能看到数据的去向地址,而不能看到数据本身。另一方面,Get 没有正文,数据必须以查询字符串或路径参数的形式传输。虽然查询字符串确实也被加密了,但由于服务器和浏览器上的请求日志记录,有可能获取该数据。

【讨论】:

    【解决方案2】:

    任何人都可以在公共论坛或 stackoverflow 上插入带有您网站链接的图片。然后接下来发生:

    1. 浏览器查看图片标签中的url
    2. 浏览器在url中查找域对应的cookie
    3. 浏览器使用用户的 cookie 向 url 发送请求
    4. 您的服务器执行操作
    5. 浏览器尝试将响应解析为图像并失败
    6. 浏览器呈现错误而不是图像

    但是,如果您将您的操作标记为仅 Http Post,则此方案不适用于 90% 的网站。但是你也应该考虑,如果黑客可以在其他网站上创建一个表单,那么他仍然可以让浏览器执行请求。所以你需要CSRF。好吧,浏览器在防止跨站请求方面做了很多工作,但在某些情况下仍然是可能的。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      相关资源
      最近更新 更多