【问题标题】:Allow access to a callback url only to an external system仅允许外部系统访问回调 URL
【发布时间】:2014-12-12 13:38:40
【问题描述】:

为了限制对控制器中的操作的访问,我遇到了问题(比如说 wwww.mysite.com/callback/c1)。我希望只有外部 ERP 系统才能访问此控制器。 ERP 允许我设置一个回调 URL,每当此 ERP 系统中发生特定事件时,它将向其发出 POST 请求。

现在,我不希望其他人能够在此 URL 上发布任何内容。我怎样才能保护这个 url 只能从 ERP 系统访问?

我一直在考虑在 ERP URL 中硬编码用户和密码,因此它会向 www.mysite.com/callback/c1?userName=user&password=pass 发出发布请求,这样我可以检查是否凭据有效,如果是,则继续请求,但凭据将在 ERP 系统中可见。

还有其他方法可以实现吗?

PD:我正在使用 ASP .NET MVC5 PD2:我无法控制ERP系统的修改,我只能设置回调URL。

【问题讨论】:

标签: c# asp.net asp.net-mvc callback


【解决方案1】:

您需要确定请求来自 ERP,因此您应该看起来像在请求中识别它的东西。您应该检查是否有:ClientCertificates、Headers、LogonUserIdentity、ServerVariables、Cookies、UserAgent、UserHostAddress、UserHostName... 如果您发现其中一些元素可以识别您的 ERP,那么您的问题就解决了。但是仍然有人可以窃取身份并复制它。

另一个选项是使用防火墙和/或 IIS 中的特殊配置。除了通常绑定到端口 80 之外,您还可以将应用程序绑定到非常用端口,例如 88,也可能绑定到只有您的 ERP 机器现在拥有的域名。您是否可以访问 ERP 操作系统上的主机文件?见this info in wikipedia

如果您设置了防火墙,您可以设置过滤器,以便对新绑定端口(在示例中为 88)的请求只能来自 ERP 机器。

您还可以检查请求是针对只有 ERP 机器现在如何解析的域,因为它是在其 hosts 文件中定义的。

如果您可以使用防火墙,您甚至可以更进一步,将第二个 IP 添加到您的接口 (NIC),只有 ERP 知道,这样您就可以收到对域标头/IP/端口组合的传入请求可以检查。

如果没有更多信息,很难给你更好的建议(什么是 ERP 的操作系统,什么样的应用程序,你可以做哪些配置......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2014-10-22
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多