2009年9月10日 星期四

HttpModule 中使用置換 Response.Filter 為何無效

最近,為了asp.net 的網站安全,被迫加強檢查使用者自行修改 Url 的問題。
例如 http://server/ap/Order/View/1 是目前使用者可以看的訂單1。但若使用者以此類推,修改 Url 為 http://server/ap/Order/View/2 就可以看到訂單2的資料,即使原來該使用者是不能看到的。

為了檢查這方面的問題,特別寫了 httpModule來防止自行修改。原理是加上 hash value. 也就是將 http://server/ap/Order/View/1 的值作 hash,然後加到 Url 上。如 http://server/ap/Order/View/1?h=887766AABB2

這樣應該很完美了。但是,有些網頁就是不能動。原來,我的方法是使用 httpModule 中,將 Respose.Filter 置換成自訂的 Filter。但這個方法在 Server.Tranfer(), Response.End(), Response.Redirect() 時是無效的。

參考文件,見 http://aspnetresources.com/articles/HttpFilters.aspx 

這是相當特殊的狀況,必須記錄下來,以免忘記了

沒有留言:

Share with Facebook