2010-06-19 57 views
3

我試圖阻止XSS攻擊,因此我使用html敏捷性包使我的白名單和Microsoft Anti-Cross站點腳本庫處理其餘部分。如何從href獲取QueryString?

現在我正在尋找編碼所有的html hrefs。我得到一大串可以包含h​​refs的html代碼。適應MS庫他們有一個URL編碼,但如果你編碼整個URl,那麼它不能被使用。因此在本例中,他們只是編碼的查詢字符串

以UrlEncode不可信輸入的URL 使用(如在 查詢字符串的值)點擊 這裏!

http://msdn.microsoft.com/en-us/library/aa973813.aspx

所以現在我的問題是我如何通過解析href和發現的查詢字符串。它總是「?」然後查詢字符串或可以有空格,並用不同的方式寫?

編輯

此網址將不被我寫的,但用戶誰將會分享。所以這就是爲什麼我需要一種方法來確保我獲得所有查詢字符串,而不僅僅是有效的格式。如果它可以工作無效的格式,我也必須抓住這些。只要黑客仍然按他們想要的方式工作,黑客就不會在乎它是否有效。

回答

5

我相信它總是在?但你可以很容易地使用這個Uri類:

Uri uri = new Uri("http://foo.com/page.html?query"); 
string query = uri.Query; 

這將包括?本身。當然,您也可以獲取其他位,這可能很方便。

+0

嗯。我會看。所以基本上使用正則表達式或其他任何來找到所有的URL,然後foreach循環他們,並把它們放在這個網址,然後使用它。 – chobo2 2010-06-19 20:26:42

+0

@ chobo2:說實話,我不會建議用正則表達式解析HTML。但是,無論您找到哪些網址,我都會這樣做。 – 2010-06-19 20:36:22

0

如何使用加密的查詢字符串,並在您的代碼中,您可以解密它
或者你可以使用Request.PathInfo,讓你不需要?在查詢字符串

+0

我並不真正使用查詢字符串。這是用戶可以放入並與其他用戶共享的內容。所以他們可以把不好的東西放在查詢字符串中,所以我想編碼。 – chobo2 2010-06-19 20:25:52

0

這裏有一個W3C reference解決與查詢字符串URI的組合物,它說,在部分:

問號(「?」,ASCII 3F十六進制) 用於分隔之間的邊界 可查詢對象的URI, 和用於表示對該對象的查詢的一組詞。