gpt4 book ai didi

c# - JSON 和网络服务安全

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:51 24 4
gpt4 key购买 nike

我知道有很多类似的问题,但我有不止 1 个,我真的很想得到答案和具体问题的建议。

我创建了一个 ASP.NET 应用程序,它通过 Web 服务访问(读取和写入)SQL Server 数据库。

我使用 JSON 调用网络服务来填充 Javascript 图形/图表。

由于应用程序的要求,我使用了大量的 JSON。

问题:

  1. 我使用表单例份验证,所以我说只有成功登录的用户才能查看网页源代码对吗?
  2. 如果是那么登录用户将能够看到我的服务路径并可以轻松访问特权信息,我想过在每个 [WebMethod] 中添加一个参数(用户名)来验证请求,这是不是一个好主意想法?
  3. 仅在服务上使用图形/图表方法是否明智,而我的其余要求直接从 Web 应用程序(C# 代码隐藏)访问数据库。

如果问题愚蠢或不清楚,我提前道歉,但我真的不想花太多时间来创建一个存在巨大安全漏洞的应用程序。

提前感谢您提供任何建议/帮助或链接

最佳答案

我会避免在 ajax 请求中传递用户名和/或密码,尤其是在不受 SSL 保护的情况下。使用 Forms Authentication 提供的身份验证 cookie,并在服务器端检查它们。

我使用的一个快捷方式是创建一个空的 .aspx 页面来接收 ajax 请求。如果有母版页,请务必省略。该页面没有标记,但可以读取 Page_Load 中的请求变量、用户信息、 session 变量等。然后 Response.Write 所需的 JSON 输出。像这样:

MySearch.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
{
// Check if user is logged in, and return JSON result of search
if (User.Identity.IsAuthenticated)
{
string json = MySearch(Request["Search"], Session["Language"]);
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();
}
}

这样您就不必向公众公开整个网络服务接口(interface)。您有一种在返回 JSON 之前“ checkout ”用户的简单方法。

如果您有未经身份验证的请求重定向到登录页面,您可能需要让未经身份验证的用户可以访问此页面,因此,IsAuthenticated 的 checkin 代码。未经身份验证的用户只会得到一个空的 html 页面,这可能会破坏 javascript 逻辑,因此请对此进行测试。

关于c# - JSON 和网络服务安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23656941/

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