玩!框架 1.2.5:如何测试响应是不是安全?

Posted

技术标签:

【中文标题】玩!框架 1.2.5:如何测试响应是不是安全?【英文标题】:Play! framework 1.2.5: How to test if response is secure?玩!框架 1.2.5:如何测试响应是否安全? 【发布时间】:2013-11-29 11:49:42 【问题描述】:

我的联系人公式页面的一个测试用例是分别使用 SSL 确保它始终处于安全上下文中。基本上,我只想知道,我有一个给定的请求,request.secure = true;

以下响应不包含任何有关此的信息,并且其标头为空:

@Test
public void shouldShowContactForm() 
    Response response = GET("/contact");
    // How can I ask the response, if the complete URL is in HTTPS?

即使我明确设置了自己的请求,我也看不到正确的方法:

@Test
public void shouldShowContactFormInSSLContext() 
    Request request = newRequest();
    request.secure = true;
    Response response = GET(request, "/contact");
    // Is it now possible?

这甚至是测试这个的正确方法还是我只是错过了有关请求/响应的重要内容?

【问题讨论】:

【参考方案1】:

对于这个问题,我认为我过去为我的应用所做的就是在我的所有控制器上都有一个@before 拦截器,看起来像这样。

     @Before
     static void checkSSL()
         if(Play.mode.equals(Play.Mode.PROD))
             if(!request.secure) 
                 Router.ActionDefinition cashTicketDefinition = Router.reverse(request.controller + "." + request.actionMethod);
                 cashTicketDefinition.absolute();
                 String url = cashTicketDefinition.url.replaceFirst( "http:", "https:");

                 redirect(url, true);
        
    

【讨论】:

这正是问题所在,没有“response.secure”字段。从响应中获取此信息的唯一方法是查看该位置的标头(如果它以“https”开头)。但是一个简单的 GET 调用的标头是空的。 @crasp - 我认为你想要做的只是强制每个请求都是安全的。我在上面编辑了我的帖子以进行演示。

以上是关于玩!框架 1.2.5:如何测试响应是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

在播放框架 1.2.5 中,扩展作业运行后台阻止请求/响应的类

哇塞!九步成功实现事件响应计划!

如何测试 Json 响应是不是包含错误或正确的 json

技能要求

Spring MVC 测试框架因 HTTP 响应 406 而失败

如何在没有 iphone 的情况下测试响应式设计字体