2012-11-27 53 views
3

我們有一個非常大的Web應用程序。
總計約有120.000條線。以純文本形式處理每個用戶輸入

在這個應用程序中,用戶有很多可能性來輸入文本。
在用戶信息,文件夾,組等。

某些用戶想要命名不同的對象,如Age < 20
有一個問題,因爲ASP.NET阻止這樣的輸入,因爲「<」阻止JavaScript注入。

我們找到了一種方法來關閉這些安全機制,但現在我們的應用程序是不安全的。

所以問題是:
是否有任何設置或屬性或任何可以設置全局(在整個應用程序的一個點),應用程序處理這種輸入爲純文本?

因此,當一個用戶想要命名一個文件夾<script>alert("ALERT");</script>它應該這樣命名,並顯示爲<script>alert("ALERT");</script>但腳本不會執行。

同爲HTML:如果它命名爲Folder<br>One它應該看起來像:Folder<br>One和不喜歡:
Folder
One

當然,我可以使用HTML編碼/ -decode,但我不想去通過全體項目,並添加一個編碼/解碼,無論輸入是製作還是顯示...
也將在全球解決方案pretent錯誤在未來的發展。

所以再次問:有沒有辦法處理每一個文本,就像文本?儘可能全球化?

希望你能理解我的問題並瞭解任何可能性。

+0

我記得沒錯,當你使用DataBinding時,這是自動的 –

+0

@SteveB請你指定你的答案?我究竟應該怎樣DataBind? –

+0

我的意思是說,如果你在一個數據模板(DataList,Datagrid等等)中有'',並且如果你將文本框綁定到內部上下文對象,編碼/解碼將被數據綁定自動處理。 –

回答

0

如果您正在使用JQuery,每當您值設置爲任何範圍或DIV,

用途:

$('#myDiv').text('<script>alert("a")</script>'); 

,不要使用:

$('#myDiv').html('<script>alert("a")</script>'); 

$('#myDiv').innerHTML='<script>alert("a")</script>'; 
+0

我認爲這不是他所需要的解決方案:http://jsfiddle.net/a7URQ/無論如何不用html編碼/解碼和轉義就可以實現注入 – QQping

0

如果你不想使用HTML編碼解碼不是試圖ValidateRequest="false"您可以在代碼中做到像波紋管:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" ValidateRequest="false" Inherits="_Default" %> 

你可能想使用另一種方法是如下..

<script> 
     function Encode() { 
     var value = (document.getElementById('TextBox1').value); 
     value = value.replace('<', "&lt;"); 
     value = value.replace('>', "&gt;"); 
     document.getElementById('TextBox1').value = value; 
     } 
</script> 

</head> 
<body> 
<form id="form1" runat="server"> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="Encode()" /> 
</form> 

服務器端

​​
+0

那麼第一部分就是我們用來關閉安全機制。對於第二個,我們必須通過完整的應用程序並將它添加到任何地方。我希望有更全面的解決方案。 –

+0

@TorbenL。嗯你是對的 – Talha

相關問題