我编写了一个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;
}
}
如果它是一个asmx webservice,那么使用Crocoder发布的链接或其他快速方式,如果它有效,你可以尝试[Authorize]属性,虽然我不确定这是否适用于你正在使用的内联web方法,我'我们只看到它在WebAPI中使用过。 Authorize attribute in ASP.NET MVC
一个更加健壮的方法肯定会有效,你可以在Users表中添加一个名为'CurrentSessionID'的列,另一个名为'LastLoginDateStamp'的列。如果你有一个有效的用户,你可以在每个登录请求中更新他们的会话和一个日期戳。然后当用户点击api时,你比较会话并确保它没有超过你决定的最后一次登录的有效阈值,例如24小时。
之后还有很多工作要做,但那是基本的想法。