問題
最近同事將 aspx 程式給 Checkmarx 掃時,
aspx 會出現 JavaScript 的 Potential Clickjacking on Legacy Browsers
問題。
主要是因為這支程式中有<script>
區段,Checkmarx 就會噴那個問題。
Potential Clickjacking on Legacy Browsers的問題是怕正常的網頁被放在 IFrame 之中,
來騙使用者進行非預期的操作,例如Clickjacking詐騙的網頁中放一個改密碼的 iframe,
去覆蓋在原有的頁面上面,讓使用者實際上是操作到 iframe 的頁面。
解法
所以解法可透過設定X-Frame-Options
及Content Security Policy (CSP)
來避免,
例如在 web.config
中設定如下,
1 |
|
但上面的方式 Checkmarx 不認得,所以就只能用程式來解,如下,
1 | if (top !== self) { |
但這樣子加上去後,又噴了Client_DOM_XSS
及Client_DOM_Open_Redirect
的問題,
針對 self.location
要進行Client_DOM_XSS
及Client_DOM_Open_Redirect
處理,
所以可以使用encodeURI
來處理Client_DOM_XSS
,
用白名單 Function 來處理Client_DOM_Open_Redirect
,如下
1 | if (top !== self) { |
註 1: 白名單 Function 要以sanitize
開頭
註 2: Checkmarx 版本為 V 9.5.5.1007 HF14
註 3: aspx 會有這個問題是因為 aspx 裡面有寫 <script>
才會有問題
參考資源
OWASP Top 10 - 2017 Examples - ASP.NET MVC 5
一個蛋,不能算一隻雞: 假設就是假設,不能當作事實。