2011-06-12 42 views
1

基本上,我需要能夠在處理之前從輸入字段中去除腳本和html。我正在使用JQuery,並希望能夠發現有這樣一種標準的方法。有任何想法嗎?使用JQuery,我怎樣才能防止用戶輸入腳本或HTML到輸入字段?

+7

不要。你應該逃避服務器上的內容。 – SLaks 2011-06-12 16:36:47

+0

我曾考慮過這個問題,並且很容易做到,但有人認爲,防止提交可能有害的腳本是明智的做法。 – ICanoe 2011-06-12 16:39:55

+1

不,確保服務器可以處理潛在惡意腳本是明智的做法。而且你不可能真的採用腰帶和大括號的方法(例如,在客戶端和服務器上這樣做),因爲最終你會試圖檢測某些東西是否被正確編碼(漏洞)或對其進行雙重編碼(這是一種痛苦)。 – 2011-06-12 16:44:31

回答

0

這是一個很好的教程,你需要什麼。正如SLaks所說,做這個服務器端。淨化你的輸入

Tutorial

你就可以用特定字符的一些正則表達式的工作,但只能一點點幫助。

+0

感謝布蘭登,但我不使用PHP。不過,我明白這一點,並會接受SLak的建議。 – ICanoe 2011-06-12 16:47:46

+0

對不起,我只是假設Html,CSS,Jquery和PHP! – lockdown 2011-06-12 17:11:41

1

您必須在服務器上執行此操作。如果你在客戶端上做這件事,那麼你就可以開放給手工製作HTTP消息的人發送到你的服務器上,知道你的服務器假設你的客戶端代碼逃避了字符串。所以,由於你的服務器不能假定內容是安全的,所以它已經假設它不是安全的。 (否則,你最終會對雙重事物進行編碼,這會變成一件痛苦的事情。)因此,你的客戶端代碼不可能也不適合進行轉義。

+0

公平點,並妥善處理。我曾經認爲做客戶端和服務器端都是明智的,但我明白你在說什麼。 – ICanoe 2011-06-12 16:45:46

3

您的HTML:

<input class="striphtml" name="name" /> 

您的JS:

$(document).ready(function() { 
    // strip all html when text in input changes 
    $(".striphtml").change(function(){ 
     $(this).val($(this).text()); 
    }); 
}); 

結果:

&lt;p&gt;This is a test.&lt;/p&gt; 

<p>This is a test.</p> 

將被替換

注意:由於SLaks提到你必須在服務器端驗證你的INPUTS!

0

你不應該這樣做。

相反,您應該在服務器上轉義您的內容。
這樣,您就可以接受惡意輸入(或<個字符)而不會受到它的傷害。

相關問題