Chuyện tình giữa target=_blank và rel=noopener

target=_blank , rel=noopener là đứa nào ?

target=_blank

Chuyện tình giữa target=_blank và rel=noopener

Hây da ! Đối với những đi vờ lớp ơ thì target=_blank quá là quen thuộc đúng không nào? Nó chính là một thuộc tính của thẻ <a> , một thẻ chuyên được dùng để tạo links trong các trang web và các bài viết. target=_blank được dùng khi các đi vờ lớp muốn chuyển hướng người sử dụng sang một liên kết khác nhưng được mở ở trong tab mới

Ví dụ hãy click vào link dưới đây các cậu sẽ được chuyển sang trang Google nhưng dưới một tab mới Download

vậy còn rel=noopener hay còn gọi là rel=noreferrer

Đây cũng là những thuộc tính đi kèm của thẻ <a> nhưng lại vô cùng quan trọng và không được phép tách khỏi thẻ <a> nếu như thẻ <a> của chúng ta được gán thêm thuộc tính target=_blank

Vây thì tại sao target=_blank lại phải đi kèm với rel=noopener

Khi click vào đường link ở phía trên. Một tab mới được sinh và và đồng thời window.opener sẽ được sinh ra để trả về thông tin của trang đã tạo ra tab mới đó. Và trang đã tạo ra cái tab mới đó còn ai ngoài trang có chứa thẻ a và mang thuộc tính target=_blank của tớ. Và ngay lúc này, trang mới được sinh ra này sẽ có quyền kiểm soát cửa sổ của opener, chính là trang của tớ. Và điều này có thể nguy hiểm nếu ...

chuyện tình giữa target=_blank và rel=noopener 

Hãy lấy một ví dụ tớ có một trang chính có tên là index.html và trang này chứa đoạn code mở trang client.html trong cửa sổ mới và tất nhiên trang client.html này có chứa đoạn mã mang í đồ không tốt. Lợi dụng việc có thể nắm quyền kiểm soát đối tượng window của index.html khi index.html mở nó trong tab mới.
Do có quyền kiểm soát đối tượng window của trang client.html nên nó có thể chuyển trang index.html thành một trang khác và đó sẽ là một mối nguy hiểm cho người sử dụng nếu trang được chuyển tới là trang web độc hại với người sử dụng. Và nguy hiểm hơn cho những forum nếu thành viên đăng đàn có sử dụng thẻ liên kết a dạng này.


Vấn đề này sẽ trở nên nhức nhối hơn nếu như kẻ tấn công sử dụng những kỉ thuật nâng cao hơn để khai thác dạng này để gay hại cho người dùng và do đó. rel=noopener đã ra đời. Khi có thuộc tính này, thì cho dù trang client.html được trang index.html mở nhưng sẽ bị từ chối quyền kiểm soát với index.htmlrel=noreferrer cũng tương đương như vậy.
Do đó để tránh những cuộc tấn công dạng này, hãy đảm bảo rằng
  • Tốt nhất là bỏ toàn bộ thuộc tính target=_blank
  • Nếu không hãy thêm thuộc tính rel='noreferrer noopener' vào bất kì thẻ a nào tồn tại target=_blank
  • Sử dụng javascript để ngăn chặn sự kiện window.open()
target=_blankrel=noopener là một cặp tình nhân không được phép tách rời. Khi họ mất đi tình yêu của mình, họ có thể biến thành quỹ dữ với châm ngôn vì em anh có thể phụ tất cả.
Mã nguồn
<script type="text/javascript">
if (window.opener) {
  opener.location = 'virus.html';
}
</script>


Code Vô Đối bản quyền bài viết của Code Vô Đối nhé thằng ăn cắp. https://codevodoi.blogspot.com Đit_cu_may !