如果字符串作为text / json传递,将传递给Java servlet的响应?

时间:2016-12-04 07:36:36

标签: java json servlets xss httpresponse

我的问题更安全相关。 请在java中考虑以下代码:

public static void DoGet(HttpServletRequest request , HttpServletResponse response) throws IOException
    {
        String input = request.getParameter("input");
        response.setContentType("application/json"); //FP
        response.getWriter().println(input);

    }

如果输入等于一个简单的字符串,那么将为上面的代码传递给客户端的内容是什么? 例如,我尝试在上面的代码中传递一个javascript脚本,将application / json设置为来自XSS的响应类型sanitize? 谢谢, 玛丽

1 个答案:

答案 0 :(得分:0)

设置内容类型并不在服务器端执行任何操作...除了告诉客户端以特定方式解释内容之外。它当然不会进行任何服务器端清理。如果需要清理,则需要在服务器端生成JSON之前/之前完成。

话虽如此,通过正确实施的浏览器和正确实施的网页,什么都不应该"评估"客户端的JSON。如果您的示例中的input参数中存在棘手的内容,则客户端JSON解析器应使用它进行编码...并将其视为无效的JSON。但是,如果出现以下情况,则存在潜在风险:

  • 在JSON中传递的值用于构建动态Web内容;即嵌入HTML或
  • 他们习惯于将HTTP请求发送回您的服务器或其他服务器。

因此建议进行服务器端清理。