C# 保证请求来自本地服务器
我有一个典型的ASP页面向我的ASP.net(c#)页面“doSomething.ashx”发出XMLHTTP请求。它们都托管在同一台服务器上 如何保证请求来自本地服务器,以阻止恶意用户访问doSomething.ashx页面并发出错误请求 编辑: 愚蠢的我忘了我可以通过用户名+密码,但是威尔:C# 保证请求来自本地服务器,c#,security,referrer,C#,Security,Referrer,我有一个典型的ASP页面向我的ASP.net(c#)页面“doSomething.ashx”发出XMLHTTP请求。它们都托管在同一台服务器上 如何保证请求来自本地服务器,以阻止恶意用户访问doSomething.ashx页面并发出错误请求 编辑: 愚蠢的我忘了我可以通过用户名+密码,但是威尔: HttpContext.Current.Request.IsLocal 工作也一样好吗?或者这会受到创造性黑客的影响吗?很简单,您可以验证请求。您需要添加一些对该请求/会话唯一的令牌。 如果它只是经过
HttpContext.Current.Request.IsLocal
工作也一样好吗?或者这会受到创造性黑客的影响吗?很简单,您可以验证请求。您需要添加一些对该请求/会话唯一的令牌。 如果它只是经过身份验证,您可以保证它来自具有详细信息的人,但仍然可以从该用户处“伪造” 您可以检查所有到期的“已知”令牌,或者使用基于会话的系统并在请求处理程序中检查其有效性
如果只使用代币。发送发出请求的页面时,需要在服务器上生成它们,然后在处理请求本身时进行检查。在HttpRequest对象中,有一个属性:
context.Request.IsLocal
如果请求来自同一台机器,则此布尔值为真
MSDN文件:
您是否想过在请求中添加一些身份验证?要么通过HTTP,要么在请求中使用uid/pwd组合?我真的不知道,但我不会依赖它。我猜这会检查IP地址;但最好不要这样做。或者至少,考虑只结合一些真正的认证来做这件事。不管怎样,它将在未来帮助你,并且,它将描述你正在努力实现的目标。+1。除非有人真的破坏了你的IP堆栈,否则这是可行的。不过,它只能在本地主机上可靠工作。无法从另一台冒充127.0.0的计算机发出http请求(tcp协商将失败)。因此,理论上,您不需要使用此方法进行身份验证?如果您正在执行XMLHTTP请求,则将使用客户端浏览器和用户IP来完成。这将失败,因为IP不是本地的。改为使用会话令牌。