2016-02-02 64 views
4

我有一個頁面的Default.aspx
當用戶瀏覽該頁面 -獲得來自URL整個字符串包括非查詢字符串C#

www.mysite.com/default.aspx/? &#& emp = 1']]; alert(2); [['1

彈出警告。爲了防止這種攻擊,我想獲取瀏覽器中輸入的整個字符串,但無法完成。

[注意:正如你所看到的,後面的文字?不需要是查詢字符串。這裏是隨機字符。如果這是一個查詢字符串,我能得到,在代碼]

protected void Page_Load(object sender, EventArgs e) 
{ 
    string query = HttpContext.Current.Request.ServerVariables["URL"] +      
       HttpContext.Current.Request.ServerVariables["PATH_INFO"] + 
       HttpContext.Current.Request.ServerVariables["QUERY_STRING"]; 
} 

在「查詢」我只得到/default.aspx/default.aspx/&

我怎樣才能在地址欄中鍵入整個字符串。

UPDATE:

HttpContext.Current.Request.Url.AbsoluteUri?& HttpContext.Current.Request.Url.ToString()http://mysite/default.aspx/?&

這不是問題的重複,因爲我的問題有個字符,未查詢字符串,並在該解決方案問題沒有解決我的問題。謝謝。

解決方案: 可能幫助有類似問題的人。 解決的辦法是在客戶端處理此問題。我從來不知道#之後的部分沒有發送到服務器端。 非常棒的建議由業餘編程器&蒙上陰影。謝謝

+1

如何獲取整個URL作爲字符串防止攻擊?無論如何,可能使用['Request.Url'](https://msdn.microsoft.com/en-us/library/system.web.httprequest.url(v = vs.110).aspx).. – user2864740

+1

你嘗試過'Request.Url'嗎? – Irshad

+0

類似於'HttpContext.Current.Request.Url.AbsoluteUri'? –

回答

3

#(包括#)之後的部分是URI片段,它不會按標準發送到服務器。它應該被瀏覽器使用,如果有ID等於分段瀏覽器的元素將滾動到它。 現在,它也被用作將參數傳遞給頁面上的JavaScript的一種方式。 通過JavaScript發送它可能間接獲得片段,但只有在加載頁面後纔可以。