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

时间:2019-04-23 11:53:31

标签: c# asp.net web-services session asmx

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

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

一种方法是检查Session变量,但是我怎么知道使用系统的客户端的session变量的名称,或者可能是他未通过这种方式进行身份验证?

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

        [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;
            }
        }

1 个答案:

答案 0 :(得分:0)

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

一种绝对有效的方法是在Users表中添加一个名为“ CurrentSessionID”的列,并在其上添加一个名为“ LastLoginDateStamp”的列。对于每个登录请求,如果您有一个有效的用户,请在那里更新其会话和一个日期戳。然后,当用户点击api时,您可以比较会话并确保会话没有超出您认为对上一次登录有效的阈值,例如24小时。

此后,还有很多工作要做,但这是基本思想。