此示例使用 HTML + Canvas 實現滑動拼圖驗證碼。Canvas繪制帶隨機缺口的背景,獨立滑塊按鈕監聽滑鼠/觸摸拖拽,實時將滑塊位置映射到Ca...
標簽中 target="_blank" 屬性的安全風險與防範措施
本
文
摘
要
一、`<a>`標簽中`target="_blank"`屬性的安全風險
1. 跨站點腳本攻擊(XSS)風險

- window.opener對象訪問風險
- 當鏈接使用`target = "_blank"`在新標簽頁打開時,若新頁面為惡意頁面,它可通過`window.opener`對象訪問原始頁面的`window`對象。這可能導致原始頁面敏感信息泄露,如用戶登錄信息(存儲在JavaScript變量中的用戶名、密碼)被惡意獲取並發送給攻擊者服務器,還可能使惡意頁面修改原始頁面DOM結構或觸發惡意JavaScript函數等。
2. Referrer泄露風險
- 敏感信息暴露
- 新頁面打開時若未設置`rel="noreferrer"`屬性,其`Referrer`頭部會包含原始頁面的URL。對於企業內部敏感頁面,可能暴露內部結構或特定路徑信息,被攻擊者利用探測網絡結構或尋找可攻擊目標;在醫療、金融等隱私要求高的領域,會暴露用戶訪問的特定頁面內容或操作路徑,侵犯用戶隱私。
二、降低安全風險的方法
1. 添加`rel`屬性
- 使用`rel="noopener noreferrer"`
- 防範跨站點腳本攻擊(XSS):設置`rel="noopener"`可阻止新頁面通過`window.opener`訪問原始頁面`window`對象,切斷惡意頁面獲取敏感信息途徑,有效防範XSS攻擊。
- 防止Referrer泄露:同時設置`rel="noreferrer"`能確保新頁面`Referrer`頭部不包含原始頁面URL,保護企業內部敏感信息及用戶隱私。
2. 安全意識與代碼審查
- 開發者安全意識培養:開發人員要充分了解`target="_blank"`的安全風險,編寫代碼時謹慎決定是否使用,若非必要應避免,從源頭減少風險。
- 代碼審查:針對`<a>`標簽中`target="_blank"`屬性進行審查,檢查是否添加`rel="noopener noreferrer"`及是否存在其他安全漏洞,及時發現並修正問題。
3. 遵循安全最佳實踐
- 參考安全標準和指南:如遵循OWASP等安全標準和指南,其強調使用`target="_blank"`時的安全註意事項並推薦相關安全措施。
- 關註安全更新動態:關註Web開發領域安全更新和最佳實踐動態,及時調整代碼安全設置,應對新安全威脅。
相關文章
