2011-08-01 69 views
0

我有一個文本區域,我需要防止輸入javascript。如果他們輸入文字。然後說一些JavaScript,JavaScript運行。並且文本不會被輸入。是否有正則表達式來阻止Javascript被輸入?

我想是否有一種方法可以阻止javascript被輸入到文本框中(比如在validation.xml中說一個正則表達式?)或者是否有其他方法可以阻止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> 

回答

4

你並不需要(也不能輕易)逃生JavaScript本身。您需要轉義HTML。最簡單的方法是通過commons-lang StringEscapeUtils.escapeHtml(..)(更喜歡版本3.0)

如果您需要保留其他html標記,那麼只需轉義javascript就會困難得多。你必須尋找onclick,onmouseover等,爲此 - 看看JSoup Cleaner

如果您完全需要支持某些標記格式,通常的做法是允許一些有限的html或自定義標記子集,例如MarkdownBBCode

+0

如果他想要阻止所有標記標記,情況並非如此,那麼這是真的。如果他們只想阻止腳本標記,最好使用正則表達式來匹配腳本標記並替換「<' and '>」字符。 –

+0

是的。但我認爲一切都是要逃避的,因爲通常情況是這樣。即使一些標籤被允許,它是一個特定的子集,或自定義標籤(如BBcode或Markdown) – Bozho

+0

我很欣賞這種反饋。 –

相關問題