除了检查会话变量是否为 NULL 之外,如何保护我的 Web 服务?

How do I secure my web service apart from checking session variable for NULL?

我编写了一个 web 服务,它基本上将数据插入中央数据库,并预计将被来自多个系统的多个客户端使用。

它可以工作,但问题是它可以被任何人访问,因此很容易被任何人使用,即任何人都可以通过输入数据或任何东西来发送垃圾邮件。

一种方法是检查会话变量,但我怎么知道使用系统的客户端的会话变量的名称,或者他可能没有那样进行身份验证?

那么我应该怎么做才能使其安全?

        [WebMethod(EnableSession= true)]
        public int InsertEngineeringData(string FunctionalLocation, string EqptType, string WINFileNo, string ComponentTagNo)
        {
            try
            {
                if (Session["User"] != null) 
                {

                }

                int EngineeringDataID = 0;

                EngineeringDataDAL EngineeringDataDAL = new Vail_PlantWebApi.EngineeringDataDAL();

                EngineeringDataID = EngineeringDataDAL.InsertEngineeringData(FunctionalLocation, EqptType, WINFileNo, ComponentTagNo);


                return EngineeringDataID;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

如果它是一个 asmx 网络服务,然后使用 link Crocoder 发布或其他快速方法,如果它有效,您可以尝试 [Authorize] 属性,尽管我不确定这是否适用于您正在使用的内联网络方法,我只看到它在 WebAPI 中使用过。 Authorize attribute in ASP.NET MVC

一种肯定有效的更稳健的方法是为用户 table 添加一个名为 'CurrentSessionID' 的列,另一个列为 'LastLoginDateStamp' 对于每个登录请求,如果您有有效用户您在那里更新他们的会话和日期戳。然后,当用户点击 api 时,您比较会话并确保它没有超过您确定的最后一次登录的有效阈值,例如 24 小时。

在那之后还有很多工作要做,但这是基本的想法。