2013-07-02 64 views
0

在我們的Web應用程序(WebInspect)中運行安全掃描後,它報告了一些aspx頁面存在多個XSS漏洞。跨站點腳本 - 被URL修改的ASP.NET表單動作

請求URL似乎能夠更改表單操作。

例,

/Website/somepage.aspx/'+alert(1234)+' 

形式動作更改爲

action="'+alert(1234)+'" 

爲了排除我們的應用程序代碼中,我試圖與默認的新的Visual Studio Web窗體項目,它允許相同的。

這怎麼能防止?

我總是被告知未經驗證的輸入被反映到頁面中是壞消息。

+0

參數化變量並清理輸入 – ApolloSoftware

+0

這必須與您設置的重寫規則有關。 '/Website/somepage.aspx/'+ alert(1234)+''必須提供一個錯誤頁面,而不是將其轉換爲'+ alert(1234)+'。至少對我來說沒有找到錯誤頁面,因爲這部分'/'+ alert(1234)+''是url上的一個新文件。 – Aristos

+0

我沒有變量來參數化或驗證。該url已被添加到aspx頁面url的末尾,並且它導致頁面在修改了表單操作的情況下呈現。我沒有看到輸入作爲查詢字符串的一部分來驗證。這完全發生在我的代碼的外面。我已確認該行爲發生在Visual Studio 2012未更改的開箱即用WebForm項目類型中。 – solidstore

回答

0

請檢查您的global.asax - Application_Start以查看是否有任何路線已被定義。

+0

不在我們的代碼中,但我開始懷疑第三方庫可能會這樣做。有沒有簡單的方法來查看定義的路線?也許從測試頁面列出它們? – solidstore

+0

嗯..不能說肯定..也許枚舉路線集合? 'Dim routeCollection AS System.Web.Routing.RouteCollection = System.Web.Routing.RouteTable.Routes' – Abhitalks

1

剛剛裝上去的動作,這樣的事情:

<form id="id_form" runat="server" action="Default.aspx"> 

當動作形式不指定ASP填補這個屬性與您在URL中寫道旁邊的最後一個斜線。如果你寫了一些asp沒有重寫這個。

+0

請解釋爲什麼你的代碼會回答提問者的問題。 –