【问题标题】:what will be passed to the response of Java servlets in case a string is passed as text/json?如果将字符串作为 text/json 传递,什么将传递给 Java servlet 的响应?
【发布时间】:2016-12-04 07:36:35
【问题描述】:

我的问题与安全性有关。 请考虑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 清理的响应类型? 谢谢, 玛丽

【问题讨论】:

  • 不,不会。您需要检查它以避免 XSS。上面的代码会将您在输入中收到的任何内容原样传递给客户端。

标签: java json servlets xss httpresponse


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2014-09-04
    • 2020-05-13
    • 1970-01-01
    • 2013-11-14
    相关资源
    最近更新 更多