我的问题更安全相关。 请在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? 谢谢, 玛丽
答案 0 :(得分:0)
设置内容类型并不在服务器端执行任何操作...除了告诉客户端以特定方式解释内容之外。它当然不会进行任何服务器端清理。如果需要清理,则需要在服务器端生成JSON之前/之前完成。
话虽如此,通过正确实施的浏览器和正确实施的网页,什么都不应该"评估"客户端的JSON。如果您的示例中的input
参数中存在棘手的内容,则客户端JSON解析器应使用它进行编码...并将其视为无效的JSON。但是,如果出现以下情况,则存在潜在风险:
因此建议进行服务器端清理。