【发布时间】:2016-07-29 15:24:00
【问题描述】:
我的应用程序是一个 Spring MVC 应用程序,不使用注释(虽然它使用的是 spring 3.1.1,但它是一个相当老的应用程序)。
我有一个 JSP 页面,可以通过 curl 等工具或直接从 Web 浏览器 URL 调用。该 URL 接受一个名为 location 的请求参数
http://localhost:8080/testdomain/registeruser.do?mylocation=fr
在调用上述 url 时,我调用了读取请求参数“mylocation”的 SimpleFormController 的实现
如何对请求参数“mylocation”进行 html 编码。在从我的控制器中的请求 [request.getParameter("mylocation")] 读取参数之前,如果我调用 HtmlUtils.htmlEscape(request.getParameter("mylocation")) 就足够了
请注意,没有表单支持 mylocation 的输入参数,如前所述,我可以从命令行工具或浏览器 URL 调用它。
【问题讨论】:
-
你为什么要编码任何东西?您是否获得了 mylocation 参数的正确值?如果这只是字母数字值,您通常不需要转义/取消转义任何内容。
-
可能存在 XSS 威胁,可以通过恶意意图的脚本。我知道 HTML 编码会将脚本特殊字符转换为其编码形式。
-
你在用那个参数做什么?如果您在 js 变量中输出数据,则 HTML 转义是不够的。但是,如果您只有一个不受信任的参数,则可以以更简单的方式对其进行验证。例如,在生成输出之前检查 myLocation 的值是否存在于 Enum 类型中:MyAllowedLocations.valueOf(myLocation);
标签: java spring jsp spring-mvc urlencode