gpt4 book ai didi

asp.net - 阻止跨域调用 asp.net .asmx Web 服务

转载 作者:行者123 更新时间:2023-12-03 22:50:47 25 4
gpt4 key购买 nike

我构建了一个应用程序,它使用 jQuery 和 JSON 来使用 ASP.NET .asmx Web 服务来执行增删改查操作。应用程序和 .asmx 位于同一域中。我不介意人们远程消耗 .asmx 的读取操作,但不希望人们随机删除内容!

我可以将我想要公开访问的方法和“隐藏”的方法分成 2 个 Web 服务。如何将对“hidden”.asmx Web 服务的调用锁定到其托管的同一域?

提前致谢。

编辑:有人可以评论一下吗,似乎有道理(来源:http://www.slideshare.net/simon/web-security-horror-stories-presentation):Ajax 可以设置 Http headers,普通形式不能。Ajax 请求必须来自同一域。

因此“x-requested-with”“XMLHttpRequest”请求必须来自同一域。

最佳答案

您需要使用 Web 服务来保护两种情况:

  1. 用户是否已通过身份验证?
  2. 该操作来 self 的页面吗?

如果您使用表单例份验证,则身份验证部分已经处理完毕。如果您的 Web 服务位于网站的表单例份验证 protected 区域,则除非登录,否则任何人都无法访问您的 Web 服务。

第二个场景是一个稍微棘手的故事。这种攻击称为 CSRF 或 XSRF(跨站请求伪造)。这意味着恶意网站会在您的用户仍登录到您的网站时代表他们执行操作。 Here's a great writeup on XSRF .

Jeff Atwood 在上面的链接中总结了这一切,但这里是 XSRF 保护的四个步骤:

  1. 将 GUID 写入用户的 Cookie。
  2. 在 AJAX 调用之前,从 cookie 中读取该值并添加它到 Web 服务 POST。
  3. 在服务器端,将 FORM 值与 Cookie 值进行比较。
  4. 由于网站无法读取其他域的 Cookie,因此您是安全的。

关于asp.net - 阻止跨域调用 asp.net .asmx Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com