我有一个经典的 ASP 页面向我的 ASP.net (c#) 页面“doSomething.ashx”发出 XMLHTTP 请求。它们都托管在同一台服务器上。
如何保证请求来自本地服务器,以阻止恶意用户访问 doSomething.ashx 页面并发出虚假请求?
编辑:
愚蠢的我忘了我可以通过用户名+密码,但会:
HttpContext.Current.Request.IsLocal
工作也一样吗?或者这会受到创造性黑客的影响吗?
在 HttpRequest 对象中,有一个属性:
context.Request.IsLocal
如果请求来自同一台机器,则此布尔值为真!
MSDN 文档:
如果请求发起者的 IP 地址是 127.0.0.1 或者请求的 IP 地址与服务器的 IP 地址相同,则 IsLocal 属性返回 true。
您将需要添加一些对该请求/会话唯一的令牌。如果它只是经过身份验证,您可以保证它来自具有详细信息的人,但仍然可以从该用户“伪造”。
您可以检查所有到期的“已知”令牌,或者使用基于会话的系统并检查它在请求处理程序中是否有效。
如果只使用令牌。您需要在发送发出请求的页面时在服务器上生成它们,然后在处理请求本身时进行检查。
很简单,您验证请求。