2014-08-27 57 views
0

我使用的是Asp.net Mvc4,我成功地使用RegularExpression來阻止壞詞,但我的問題是,如果有人把這些不好的單詞放在大寫字母中,那麼它會通過,我該如何阻止? 這是我如何停止單詞的不同組合

[RegularExpression("^((?!(www|gamble|keygen|http)).)*$", ErrorMessage = "Invalid word")] 

所以,如果有人把WWW將停止,但如果他們把萬維網WWW萬維網它會經歷;我能做些什麼來阻止一個單詞的所有組合?

+5

使用'i'標誌。它無視案件。 – krodmannix 2014-08-27 18:57:06

+4

如果有人想通過文本傳達某些內容,無論您實施多少次限制,他們都會這樣做。 – 2014-08-27 18:59:41

+2

只是不要去那裏。和正則表達式一樣,它們很容易被專用海報所迷惑。 – 2014-08-27 19:02:04

回答

0

我想你並沒有使用它來做客戶端驗證(我認爲你不想實際發送壞字的列表給客戶端,是嗎?)。

在這種情況下,您可以通過預先(?i)正則表達式使用i改性劑,如RegularExpressionAttribute不支持外部提供的修飾。請注意,這在JavaScript中不起作用(因爲它不支持內聯修飾符)。

但是,正如其他人所指出的那樣,這種保護措施很容易被愚弄,更糟糕的是,您可能會阻止合法請求,所以請小心。例如,你應該使用\b錨來限制你的整個單詞,這將避免很多意想不到的結果。

+0

謝謝,我會小心它,它的工作。 – user1591668 2014-08-28 02:51:09