C# JSON与web服务安全

C# JSON与web服务安全,c#,asp.net,json,web-services,C#,Asp.net,Json,Web Services,我知道有很多类似的问题,但我有超过1个,我真的想知道答案和具体问题的建议请 我创建了一个ASP.NET应用程序,它通过web服务访问(读写)SQL Server数据库 我使用JSON调用Web服务来填充Javascript图形/图表 由于应用程序的要求,我使用了大量JSON 问题: 我使用表单身份验证,所以我说只有成功登录的用户才能查看网页源代码,对吗 如果是,那么登录的用户将能够看到我的服务路径,并可以轻松访问特权信息。我曾想过在每个[WebMethod]中添加一个参数(用户名)来验证请求,这

我知道有很多类似的问题,但我有超过1个,我真的想知道答案和具体问题的建议请

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

我使用JSON调用Web服务来填充Javascript图形/图表

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

问题:

  • 我使用表单身份验证,所以我说只有成功登录的用户才能查看网页源代码,对吗
  • 如果是,那么登录的用户将能够看到我的服务路径,并可以轻松访问特权信息。我曾想过在每个[WebMethod]中添加一个参数(用户名)来验证请求,这是一个好主意吗
  • 明智的做法是只在服务上使用图形/图表方法,并在我的其他需求中直接从web应用程序(C#代码隐藏)访问数据库
  • 如果问题很愚蠢或不清楚,我会提前道歉,但我真的不想花这么多时间创建一个有巨大安全漏洞的应用程序


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

    我将避免在ajax请求中传递用户名和/或密码,尤其是在没有SSL保护的情况下。使用Forms authentication提供的身份验证cookie,并在服务器端进行检查

    我使用的一个快捷方式是创建一个空的.aspx页面来接收ajax请求。如果你有母版页,一定要把它删掉。页面没有标记,但可以读取页面加载中的请求变量、用户信息、会话变量等。然后响应。编写所需的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();
             }
       }
    
    这样,您就不必向公众公开整个web服务接口。在返回JSON之前,您有一个简单的方法“签出”用户


    如果有未经身份验证的请求重定向到登录页面,则可能需要将此页面保留给未经身份验证的用户,因此,的签入代码已验证。未经身份验证的用户只会得到一个空的html页面,这可能会破坏javascript逻辑,因此请对此进行测试。

    在代码中使用ajax时,您应该假设服务的路径对所有人都是公共的。因此,您需要在Web服务中提供一些安全性。