有正则表达式阻止Javascript被输入吗?

时间:2011-08-01 11:53:17

标签: java javascript xml jsp validation

我有一个文本区域,我需要阻止输入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>

1 个答案:

答案 0 :(得分:4)

你不需要(也不能轻易)逃避javascript本身。您需要转义HTML。最简单的方法是通过commons-lang StringEscapeUtils.escapeHtml(..)(更喜欢3.0版本)

如果你需要保留其他的html标签,那么仅仅逃避javascript就会困难得多。你必须寻找onclick,onmouseover等等。为此 - 看看JSoup Cleaner

如果您需要支持某些标记格式,通常的做法是允许某些有限的html或自定义标记子集,例如MarkdownBBCode