[Checkmarx掃描漏洞處理] - Value Shadowing

[Checkmarx掃描漏洞處理] - Value Shadowing

從HttpRequest取值時,如果寫成

string id = Request["id"];

就會有Value Shadowing的問題。

依照MSDN中的說明,這樣的寫法會從所有 HTTP 要求集合中找出的索引鍵="id"的資料,

另一篇文章中說明HttpRequest取值得順序為QueryString → Form → Cookies → ServerVariables

所以如果同時有在QueryString及Form有同樣的Key的話,只會取到QueryString的值,駭客就可以用這樣的方法注入任何文字。

因此應該從HttpRequest中取值時,應該要明確寫明來源,以QueryString為例:

string id = Request.QueryString["id"]

參考資料:

MSDN

http://www.hanselman.com/blog/ASPNETParamsCollectionVsQueryStringFormsVsRequestindexAndDoubleDecoding.aspx