Saturday 9 April 2011

Bảo mật nội dung trang web với các thẻ "onselectstart" và "ondragstart"

Thi thoảng gặp những trang web "cứng đầu" không cho select hoặc copy nội dung của nó (vì bảo vệ bản quyền). Trong trường hợp đó chúng ta thường Save As nó về máy, view HTML code ra, tìm cách xóa sạch trơn các script lẫn trong đống hỗn độn dữ liệu và HTML markup. Nhược điểm của cách này là mất khá nhiều thời gian và thường là thiếu kiên nhẫn! Dưới đây sẽ trình bày 1 cách để tìm đúng "huyệt" và sau đó xóa nó đi, khi đó sẽ copy thoải mái.

<body topmargin="0" leftmargin="0" rightmargin="0" ondragstart="return false" onselectstart="return false" > 

Ở đây sẽ tìm tất cả "onselectstart" và xóa đi là OK.

Ngoài ra các đoạn text trong thẻ div cũng có thể được bảo vệ bởi thuộc tính -moz-user-select (mặc định là Auto).

Chỉ việc đổi nó sang None là sẽ bỏ đi áo giáp bảo vệ này.
<div style="-moz-user-select:none;" /> 

Tương tự như vậy, thẻ "ondragstart" sẽ bảo vệ việc kéo nội dung (text, image...) và thả sang vị trí mới (thí dụ local directory).

Về phía người thiết kế web site, lợi dụng đặc điểm này để có thể thiết kế cách bảo mật nội dung site. Có thể thông qua CSS hoặc JavaScript. Đối với JavaScript, hàm dưới đây được xây dựng để tạo ra giáp bảo vệ cho nội dung. Nếu không thể tìm thấy sự file JavaScript (thí dụ đã bị che dấu trên server thông qua HttpHandler) thì lớp bảo vệ càng khó bị phá vỡ.

function disableSelection(target){ 
if (typeof target.onselectstart!="undefined") //IE route 
target.onselectstart=function(){return false} 

else if (typeof target.style.MozUserSelect!="undefined") //Firefox route 
target.style.MozUserSelect="none" 

else //All other route (ie: Opera) 
target.onmousedown=function(){return false} 

target.style.cursor = "default" 
}

2 comments:

  1. Thank anh về bài viết khá hay. Dùng cách này để có thể bảo vệ bản quyền của mình khá tốt. Tuy nhiên có một cách phá protection mà ko cần xóa script. Đó là Save As về máy, sau đó Open With và chọn MS. Word. Đảm bảo copy/paste thoải mái :-)

    ReplyDelete
  2. Hi Vũ,

    Cảm ơn bạn đã chia sẻ cách làm tuyệt vời. Đúng như bạn đã nói, cách làm của mình chỉ để giúp hạn chế phát tán thông tin, chứ không thể hạn chế hoàn toàn. Đó là lý do tại sao luật pháp nước Mỹ bảo vệ bản quyền cho người dân nước mình nhưng không có nghĩa là bảo vệ thái quá, sẽ có những đối thủ bắt chước và làm tốt hơn. Điển hình là Microsoft copy các ý tưởng giao diện của Macintosh nhưng họ mới chính là những người làm tốt hơn và đưa các sản phẩm đến gần với công chúng hơn như chúng ta đã biết ngày nay.

    Happy day,

    ReplyDelete