我是Java EE的新手,我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
Run Code Online (Sandbox Code Playgroud)
是一种旧式的编码方式,在JSP版本2中,存在一种避免JSP文件中的Java代码的方法.有人可以告诉我替代的JSP 2行,以及这种技术的名称是什么?
如何在JSP/Servlet Web应用程序中防止XSS攻击?
我用这种方式在JSP中显示字符串:
${someString}
Run Code Online (Sandbox Code Playgroud)
当然,这个字符串可能包含特殊的html字符.目前可以HTML注入恶意代码(例如,如果someString是javascript包含 - <script src...>).
如何在打印前确保所有字符串都被转义?
我正在使用Spring MVC和JSP.
在我的遗留项目中,我可以看到在将字符串发送到浏览器之前使用escapeHtml.
StringEscapeUtils.escapeHtml(stringBody);
Run Code Online (Sandbox Code Playgroud)
我从api doc中知道了escapeHtml的用途.给出了一个例子: -
For example:
"bread" & "butter"
becomes:
"bread" & "butter".
Run Code Online (Sandbox Code Playgroud)
我的理解是当我们在转义html之后发送字符串时,它将转换回原始字符的浏览器职责.是对的吗?
但是我没有得到原因,何时需要,如果我们发送字符串体而不转义html会发生什么?如果我们在将它发送到浏览器之前不做escapeHtml,那么成本是多少
我正在使用JSP编写一个网站.我希望网站有多种语言版本,所以我HashMap为我计划支持的每种语言创建了一个,并且通过map.get("identifier")其他一些代码来查找文本.
我遇到的问题是我之前通过使用format函数解决的问题(类似于printf许多语言),但这是另一种语言.
具体问题是,文本User performed action可能会出现Action was performed by user另一种语言(即术语可能会出现故障).
在过去,我做过类似的事情#translate("Welcome to the site, %s!", {"Username"}),然后使用语言的format功能替换%s用户名.我可以简单地使用String#replace但是我不能做#translate("Welcome to the site, %s! You last visited on %s!", {"username", "last visit"})像我想做的事情.
对不起,如果这是一个不好的解释 - 只需查看printfPHP之类的东西.
在Java中复制这样的东西的最佳方法是什么?谢谢您的帮助.