• About
  • Advertise
  • Privacy & Policy
  • Contact
DevZone
  • Home
  • News
  • Dev
    • All
    • Algorithm
    • Architecture
    • Database
    • Design
    • DevOps
    • IoT
    • Network
    • Test
    • Web
    Phương thức xử lý mảng trong javascript

    Phương thức xử lý mảng trong javascript

    Bảo vệ content, chống copy nội dung web!

    Bảo vệ content, chống copy nội dung web!

    Lưu ý mệnh đề NOT IN trong SQL

    Lưu ý mệnh đề NOT IN trong SQL

    SOLID Principles: Dependency Inversion Principle

    SOLID Principles: Dependency Inversion Principle

    Solid Principles: Interface Segregation Principle

    Solid Principles: Interface Segregation Principle

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    IPC – Đằng sau sự thành công của Chromium

    IPC – Đằng sau sự thành công của Chromium

    Dựng layout website với CSS Grid Layout

    Dựng layout website với CSS Grid Layout

    Golang cơ bản (p1)

    Golang cơ bản (p1)

    Trending Tags

    • Idea
    • Lifestyle
    No Result
    View All Result
    • Home
    • News
    • Dev
      • All
      • Algorithm
      • Architecture
      • Database
      • Design
      • DevOps
      • IoT
      • Network
      • Test
      • Web
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      Bảo vệ content, chống copy nội dung web!

      Bảo vệ content, chống copy nội dung web!

      Lưu ý mệnh đề NOT IN trong SQL

      Lưu ý mệnh đề NOT IN trong SQL

      SOLID Principles: Dependency Inversion Principle

      SOLID Principles: Dependency Inversion Principle

      Solid Principles: Interface Segregation Principle

      Solid Principles: Interface Segregation Principle

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      IPC – Đằng sau sự thành công của Chromium

      IPC – Đằng sau sự thành công của Chromium

      Dựng layout website với CSS Grid Layout

      Dựng layout website với CSS Grid Layout

      Golang cơ bản (p1)

      Golang cơ bản (p1)

      Trending Tags

      • Idea
      • Lifestyle
      No Result
      View All Result
      DEVZONE
      No Result
      View All Result
      Home Dev

      Bảo vệ content, chống copy nội dung web!

      Hi I'am Tien Anh by Hi I'am Tien Anh
      May 4, 2020
      in Dev, Idea
      0
      Bảo vệ content, chống copy nội dung web!

      Trong tình hình nội dung trên Internet hiện nay người sáng tạo nội dung thì ít mà copier, reup thì đông hơn quân Nguyên. Các nội dung dễ bị copy và reup nhất dĩ nhiên là các đoạn văn bản xuất hiện trên các trang web. Nhiều khi bài viết trên blog chính chủ còn ít view hơn cùng bài viết đó nhưng được copy tới nơi có cộng đồng lớn hơn.

      Việc này càng nghiêm trọng hơn với các nội dung như sách, truyện đều là cả bầu trời chất xám của tác giả. Vừa upload lên một Network nào đó như Wattpad, Truyenyy đã bị crawl mất :((

      Nhưng khi chấp nhận gửi dữ liệu tới người dùng mà lại qua dạng các trang web, gần như chưa có cách nào để có thể bảo vệ hoàn toàn nội dung đó của bạn không bị đánh cắp! Nhưng chúng ta có thể cản trở việc làm đó, khiến nó không còn đơn giản như copy/paste. Cũng giống như javascript obfuscator không thể che giấu hoàn toàn những đoạn script mà ta sử dụng trên web của mình nhưng nó làm nản lòng hầu hết những tay hay vooc vạch tìm lỗ hổng :)). Đối với các cao thủ có thể đọc hiểu và có thể vượt qua những rào cản thì yên tâm rằng họ biết tính toán và nhận ra cái giá phải trả là quá cao so với những gì nhận được.

      Vậy với vấn đề đặt ra ở trên! Bạn là một nhà sáng tạo nội dung. Ví dụ như viết blog, làm sao để nội dung của mình được an toàn?

      Chống Crawler by rice

      Crawler loại này thường chỉ biết dùng thao tác copy + paste. Để làm khó loại này chúng ta cần một đoạn js hoặc css đơn giản:

      //disable mouse drag select start
      
      document.onselectstart = new Function('return false');
      
      function dMDown(e) { return false; }
      
      function dOClick() { return true; }
      
      document.onmousedown = dMDown;
      
      document.onclick = dOClick;
      
      $("#document").attr("unselectable", "on"); 
      
      //disable mouse drag select end
      
      //disable right click - context menu
      
      document.oncontextmenu = new Function("return false");
      
      
      //disable CTRL+A/CTRL+C through key board start
      
      //use this function
      
      
      function disableSelectCopy(e) {
      
      // current pressed key
      
          var pressedKey = String.fromCharCode(e.keyCode).toLowerCase();
      
          if (e.ctrlKey && (pressedKey == "c" || pressedKey == "x" || pressedKey == "v" || pressedKey == "a")) {
      
              return false;
      
          }
      
      }
      
      document.onkeydown = disableSelectCopy;
      CSS:
      
      //disable selection through CSS for different browsers
      
      #document, #ctl00_MasterPageBodyTag{
          user-select: none;
          -ms-user-select: none;
          -o-user-select:none;
          -moz-user-select: none;
          -khtml-user-select: none;
          -webkit-user-select: none;
          -webkit-touch-callout: none;
      }

      Sources: https://stackoverflow.com/questions/9958478/how-to-disable-copy-paste-browser

      Chống Crawler HTML

      Crawler HTML là một loại crawler do mình tự định nghĩa ra! Đó là những thanh niên chỉ cào HTML về rồi parse DOM đọc dữ liệu. Với loại Crawler này việc bảo vệ content là rất đơn giản. Chỉ cần load dữ liệu không muốn bị lấy được bằng Js (Ajax, Socket) là đối tượng không thể có được những gì hắn muốn.

      Chống Crawler nâng cao

      Crawler ở một đẳng cấp cao hơn khi xây dựng trên giả lập trình duyệt (puppeteer, selenium). Khi được lên kịch bản đủ tốt chúng có thể thu thập được mọi thứ chúng muốn :(( . Do vậy chúng ta cần những biện pháp mạnh tay hơn để xử lý thanh niên này. Về cơ bản và là điều hiển nhiên khi đã gửi dữ liệu đi để phục vụ người dùng thì họ đã có được nó rồi. Nhưng ở đây chúng ta lại muốn họ nhìn thấy nhưng không được mang đi! Giải pháp ở đây là làm khó những thanh niên tham lam này.

      • Gây lú khi đọc source code!

      Cũng như js hay css chúng ta thường minify lại để giảm dung lượng truyền tải và một công đôi việc, file Js được minify thường không ai muốn bơi trong đó hết. Nay áp dụng vào toàn hệ thống source code gửi về trình duyệt với CSS modules. Phương pháp này hiện mình cũng chỉ biết đến nó trên những hệ thống dùng client render (vuejs, react …). Cụ thể khi sử dụng CSS modules các class name sau khi compile sẽ trông như thế này:

      CSS modules class name

      Và mỗi lần compile chúng lại thay đổi :)).

      • Không cho phép dùng Devtool

      Cách này em đã áp dụng vào Eblog (maiamnho, khoelahanhphuc, nhatkylamdep). Khi không dùng chuột phải hay chọn vùng văn bản để copy. Các thanh niên có nghề thường dùng đến F12 thần thánh.

      Cracker Trap

      Nhưng Cracker Trap nói “Ở đây chúng tôi không làm như thế”.

      Cracker Trap : https://www.npmjs.com/package/cracker-trap. Module cho phép stop devtool ngay khi chúng được bật nên! Khi lắng nghe sự kiện bật devtool chúng ta có thể xóa trắng nội dung trang nếu muốn. Mình đã áp dụng vào đồ án tốt nghiệp và thu hoạch khá tốt.

      • Thay đổi thứ tự (nth) của các DOM

      Khi không dựa dẫm được vào class name hay id của DOM để lấy dữ liệu thường crawler sẽ đùng đến Xpath, thứ tự vị trí tương đối của các thẻ. Chúng ta dễ dàng xử lý bằng cách thêm ngẫu nhiên một vài thẻ trong suốt hoặc thẻ ẩn vào cây DOM nhằm làm xáo trộn vị trí tương đối các thẻ với nhau.

      • Limit Rate
      NGINX Rate Limiting
      Thuật toán xô bị rò rỉ (leaky bucket algorithm)
      Rate Limiting with NGINX and NGINX Plus

      Cái này mình vừa tìm hiểu được do một hôm đang crawl truyenfu**.vn nếu thong thả đọc chậm rãi thì mọi thứ rất ok, Nhưng khi đẩy thêm nhiều request cùng một lúc server sau đó báo lỗi 500, tưởng rằng server của họ sập nhưng ngay lập tức thấy vô lý với một site hơn 30tr view một tháng hệ thống sẽ rất kinh khủng (tất nhiên server vẫn sống rất tốt). Mình sẽ thử triển khai và viết vào bài nào đó trong tương lại.

      • Đo tốc độ lướt bằng Cookie và dùng Capcha để chặn

      Nếu trình duyệt không cho phép dùng cookie chúng ta cho hiện capcha liên tục với mỗi request! Nếu trình duyệt cho dùng cookie chúng ta lưu lại thời gian lướt giữa các page trong một khoảng nào đó. Nếu quá nhanh => hiện capcha.

      Với tất cả các cánh nêu trên mình sẽ triển khai và trình bày quá trình vào một bài nào đó. Nhìn tổng quan hơn những phương pháp đó ngoài việc chống copy crawl chúng đều tối ưu hiệu suất cũng như tốc độ website. Ví dụ Css module làm giảm đáng kể kích thước file css khi classname được thu về rất gọn gàng, Rate limit để hạn chế DDOS, Capcha cũng hạn chế DDOS. Giúp server yếu vẫn có thể hoạt động tốt phục vụ tới giới hạn người dùng! Phần còn lại sẽ từ chối phục vụ luôn. Sẽ không xảy ra tình trạng tất cả mọi người đều không được phục vụ.

      Câu hỏi khi được hỏi khi bảo vệ đồ án: “Em đã có cách nào chống lại khi web đã được load xong và họ lưu trang lại?” – đến bây giờ mình vẫn chưa tìm giải pháp cho trường hợp này, có anh em nào có ý kiến có thể góp ý bên dưới với ạ?

      Bonus
      Thả tim (5 lượt thả tim)
      Loading...
      Previous Post

      Lưu ý mệnh đề NOT IN trong SQL

      Next Post

      Lợi ích của việc tập thể dục thường xuyên

      Hi I'am Tien Anh

      Hi I'am Tien Anh

      Muốn biết mọi điều mình không biết - Muốn học mọi thứ thấy hay ho

      Next Post
      Lợi ích của việc tập thể dục thường xuyên

      Lợi ích của việc tập thể dục thường xuyên

      Leave a Reply Cancel reply

      Your email address will not be published. Required fields are marked *

      Recent News

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      July 25, 2020
      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      June 26, 2020
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      May 31, 2020
      Lợi ích của việc tập thể dục thường xuyên

      Lợi ích của việc tập thể dục thường xuyên

      May 25, 2020
      DEVZONE

      Browse by Category

      • Algorithm
      • Architecture
      • Database
      • Design
      • Dev
      • DevOps
      • Idea
      • IoT
      • Lifestyle
      • Network
      • News
      • Test
      • Uncategorized
      • Web
      • About
      • Advertise
      • Privacy & Policy
      • Contact

      © 2019 Devzone

      No Result
      View All Result

      © 2019 Devzone