我有一个文本区域,我需要阻止输入javascript。如果他们输入文字。然后说一些javascript,javascript运行。并且文本没有输入。
我猜有没有办法阻止javascript被输入文本字段(比如说验证文件中的正则表达式?)或者还有什么可以防止javascript被运行(可能是在jsp上) )!
这是我得到的:
JSP:
<td>
You have <strong><span id="commentsCounter">${const['COMMENT_MAX_LENGTH'] - fn:length(commentForm.comment)}</span></strong> characters left.<br/>
<textarea id="comment" name="comment" rows="2" cols="125" style="width:640px;"
onkeypress="characterCounter('commentsCounter',${const['COMMENT_MAX_LENGTH']}, this)"
onkeydown="characterCounter('commentsCounter',${const['COMMENT_MAX_LENGTH']}, this)"
onkeyup="characterCounter('commentsCounter',${const['COMMENT_MAX_LENGTH']}, this)"></textarea>
<a href="javascript:addComment();"><img src="../images/icon_add.gif" border="0" alt="Add"/></a>
</td>
这是我的validation.xml:
<form name="whatif_add_entry_comment">
<field property="id" depends="minlength">
<msg name="minlength" key="ID has a minimum length of {0}" resource="false" />
<arg name="minlength" key="${var:minlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>0</var-value>
</var>
</field>
<field property="comment" depends="required,minlength,maxlength">
<msg name="required" key="Comment name is required." resource="false" />
<msg name="minlength" key="Comment has minimum length of {0}" resource="false" />
<arg name="minlength" key="${var:minlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>1</var-value>
</var>
<msg name="maxlength" key="Comment has a maximum length of {0}" resource="false" />
<arg name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>250</var-value>
</var>
</field>
</form>
答案 0 :(得分:4)
你不需要(也不能轻易)逃避javascript本身。您需要转义HTML。最简单的方法是通过commons-lang StringEscapeUtils.escapeHtml(..)
(更喜欢3.0版本)
如果你需要保留其他的html标签,那么仅仅逃避javascript就会困难得多。你必须寻找onclick,onmouseover等等。为此 - 看看JSoup Cleaner。