Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过浏览器进行页眉插入_Java_Security_Header_Request - Fatal编程技术网

Java 通过浏览器进行页眉插入

Java 通过浏览器进行页眉插入,java,security,header,request,Java,Security,Header,Request,我有一个带有7台服务器的集群应用程序 应用程序使用负载平衡器将用户重定向到服务器 对于身份验证,它使用SiteMinder 对于身份验证,我们查看请求req.getHeader(“HEADER\u NAME”) 标头名称由SiteMinder传递给应用程序,并对用户进行身份验证 当我们使用负载平衡器URL时,它与身份验证配合得很好,因为SiteMinder负责任何可能的注入 但是当我们使用一个特定的服务器URL时,我们可以插入任何头(例如在Firefox中使用Modify头),这就是问题所在 是

我有一个带有7台服务器的集群应用程序

应用程序使用负载平衡器将用户重定向到服务器

对于身份验证,它使用SiteMinder

对于身份验证,我们查看请求req.getHeader(“HEADER\u NAME”)

标头名称由SiteMinder传递给应用程序,并对用户进行身份验证

当我们使用负载平衡器URL时,它与身份验证配合得很好,因为SiteMinder负责任何可能的注入

但是当我们使用一个特定的服务器URL时,我们可以插入任何头(例如在Firefox中使用Modify头),这就是问题所在

是否有办法确定是否注入了收割台


谢谢

假设您正在查找的标题仅包含经过身份验证的用户的用户名,不,您无法识别该标题是注入的,因为它在服务器上看起来与SiteMinder添加的标题完全相同

如果有任何选项可以加密、散列或签名头,那么这将是检查篡改的有效方法


否则,您可能会限制对直接服务器URL的访问,以便只有运行Site Minder的负载平衡器才能访问这些URL。要实现这一点,您不会将公共IP路由到服务器本身。

无法识别头被注入。。您可以使用以下两个选项之一:

  • 正如SilverlightFox建议的那样,加密用户id而不是以纯文本形式发送标题。您可以通过使用SiteMinder的ActiveResponse特性来实现这一点,该特性允许您注入一个Java类来生成头值

  • 另一个更简单的选项是在应用程序和SiteMinder设置之间定义共享机密。然后,您可以确保共享机密还作为标头与用户id等一起发送。如果共享机密字符串未发送/不匹配,则可以拒绝请求。 这不像第一个选项那样安全,但假设您有适当的安全策略(限制对服务器的访问/SM配置,仅允许管理员直接访问服务器URL等),这就足够了

  • 但是,如果您对安全过程不是很确定,那么最好使用第一个选项

    希望这有帮助