我有一个简单的jsp,它有3个输入(名称,ID和电子邮件)和表单提交。从做一些阅读,看起来我的输入值应该编码。我怎么能这样做?谁能提供一个例子 例如
<td><input id="email" name="email" value=""/></td>
<td><input id="fullname" name="fullname" value=""/></td>
<td><input id="userId" name="userId" value=""/></td>
<input type ="submit" value ="Get User" />
如何编码电子邮件,全名和uerId? 我也见过如下例子:
String safeOutput = ESAPI.encoder().encodeForHTML( Comment)
是否应该对HTML和java代码进行编码? 我会很感激一些提示,因为我对此感到困惑。 感谢
答案 0 :(得分:0)
基本上,如果有人在您的任何参数中放入任何HTML,然后您在网站上显示这些HTML,那么他们的HTML将由浏览器进行解析。他们可以使用它来搞砸你的格式,即保持B标签未闭合,或者他们可以放入指向另一个网站上的脚本的脚本标签。
防范它的两种最基本的方法是:
如果您想要禁止所有HTML,这些将有效。但是如果你想允许用户输入一些HTML,比如安全标签(B,I,EM,STRONG),那么你需要一个库来删除不在白名单上的所有HTML标签。
答案 1 :(得分:0)
理想情况下,您应该使用HDIV (HTTP Data Integrity Validator)之类的安全框架。我们用它 一个大型电子商务应用程序,刚刚得到我们的安全审查 成功的。
一些很棒的功能
从HDIV网站提取
HDIV是一个消除或减轻网络的开源框架 一些最常用的JVM Web框架的设计安全风险
答案 2 :(得分:0)
实际上不可能阻止人们在一般文本字段中输入HTML片段,因为您可能希望允许他们输入“特殊”字符,例如&amp; &LT;和&gt;。因此,不要试图阻止或删除HTML,最好确保在显示时,以安全的方式完成。 The JSP c:out
action does that。而不是写
<p>You said: ${userMessage}</p>
写
<p>You said: <c:out value="${userMessage}"/></p>