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

问题描述 投票:0回答:1

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

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

一种方法是检查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;
            }
        }
c# asp.net web-services session asmx
1个回答
0
投票

如果它是一个asmx webservice,那么使用Crocoder发布的链接或其他快速方式,如果它有效,你可以尝试[Authorize]属性,虽然我不确定这是否适用于你正在使用的内联web方法,我'我们只看到它在WebAPI中使用过。 Authorize attribute in ASP.NET MVC

一个更加健壮的方法肯定会有效,你可以在Users表中添加一个名为'CurrentSessionID'的列,另一个名为'LastLoginDateStamp'的列。如果你有一个有效的用户,你可以在每个登录请求中更新他们的会话和一个日期戳。然后当用户点击api时,你比较会话并确保它没有超过你决定的最后一次登录的有效阈值,例如24小时。

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

© www.soinside.com 2019 - 2024. All rights reserved.