为了限制对控制器中操作的访问,我面临一些问题(比如ww.mysite.com/callback/c1)。我希望只有外部的ERP系统才能访问这个控制器。ERP允许我设置一个回调URL,每次在这个ERP系统中发生特定事件时,它都会发出一个POST请求。
现在,我不希望其他任何人能够发布任何东西到这个URL。我如何保护这个网址只能从ERP系统访问?
我一直在考虑在ERP URL中硬编码用户和密码,因此它会向www.mysite.com/callback/c1?userName=user&password=pass发出post请求,这样我就可以检查凭据是否有效,如果有效,则继续执行请求,但是凭据在ERP系统中是可见的。
还有其他方法可以做到这一点吗?
PD:我正在使用ASP .NET MVC5 PD2:我没有对ERP系统进行修改的控制权,我只能设置回调URL。
发布于 2014-12-12 16:51:18
您需要识别来自ERP的请求,因此您应该在请求中找到标识它的方法。如果有: ClientCertificates,Header,LogonUserIdentity,ServerVariables,Cookies,UserAgent,UserHostAddress,UserHostName.如果您找到了一些识别ERP的元素,那么问题就解决了。但还是有人可以窃取身份并复制出来。
另一个选项是使用防火墙和/或IIS中的特殊配置。除了通常绑定到端口80之外,您还可以将您的应用程序绑定到一个非常规端口,比如88端口,也许还可以绑定到一个域名,该域名只有您的ERP计算机nows.Do才能访问ERP操作系统上的主机文件?见维基百科中的这一信息。
如果您设置了防火墙,您可以设置过滤器,以便对新绑定端口(在示例88中)的请求只能来自ERP机器。
您还可以检查请求是否指向只有ERP机器现在才知道如何解析的域,因为它是在其主机文件中定义的。
如果您可以使用防火墙,您甚至可以向前迈进一步,将第二个IP添加到您的接口(NIC)中,只有ERP才知道这一点,这样您就可以将传入的请求发送到域报头/IP/端口组合,并对其进行检查。
提供更多的信息很难给你一个更好的建议(这是ERP的操作系统,什么样的应用程序,你能做什么配置.)
https://stackoverflow.com/questions/27444869
复制相似问题