Một ví dụ như vậy. Cách nhúng mã JavaScript vào mã nguồn tập lệnh trang HTML

Natasha Ngày 31 tháng 10 năm 2011 lúc 03:10 JavaScript: Ẩn tập lệnh khỏi con mắt tò mò
  • Phòng gỗ *

Bạn đã bao giờ muốn ẩn một tập lệnh trên trang của mình khỏi những người lạ khiến một menu đẹp đến phi thực tế xuất hiện hoặc thực hiện các hành động khác mà bạn không muốn sớm thấy trên mỗi trang web thứ hai chưa?
Nếu có thì phương pháp được nêu trong bài viết này sẽ hữu ích cho bạn cùng với việc làm rối mã. Đồng thời, tôi sẽ khẳng định ngay rằng phương pháp này không hiệu quả 100% nhưng có thể sẽ bảo vệ bạn khỏi hầu hết những người không chuyên và một số chuyên gia.

Lý thuyết Giả sử chúng ta có một trang nojs.php và trên đó có một tập lệnh secret.js cần được ẩn. Trình duyệt và người dùng có thể nhận tập lệnh từ máy chủ theo các cách sau:
  • Tải tập lệnh được đặt trực tiếp trên trang hoặc được tải bằng DOM;
  • Xem tập lệnh trong cửa sổ Mã nguồn trang;
  • Lưu một trang có tất cả các tệp vào ổ cứng của bạn;
  • Nhập URL trực tiếp vào thanh địa chỉ.
  • Trong trường hợp đầu tiên, trình duyệt phải gửi tiêu đề HTTP HTTP_REFERER.
    Trong trường hợp thứ hai và thứ ba, nó không được truyền bởi tất cả các trình duyệt (Chrome, FireFox hiển thị tập lệnh đã tải xuống trước đó từ bộ đệm; Opera, IE tải lại tập lệnh nhưng không gửi người giới thiệu).
    Trong trường hợp thứ tư, tham chiếu không được truyền bởi bất kỳ trình duyệt nào trong số bốn trình duyệt.
    Nếu chúng tôi phát hành JavaScript một cách linh hoạt và kiểm tra sự hiện diện của tiêu đề người giới thiệu trong yêu cầu, thì chúng tôi sẽ ngay lập tức bảo vệ mình khỏi Opera và IE, nhưng đối với Crome và Firefox, chúng tôi sẽ phải nghĩ ra thứ gì đó phức tạp hơn. Trước tiên, chúng tôi sẽ tải xuống một tập lệnh, sau đó tập lệnh này sẽ tải xuống một tập lệnh khác và cả hai lần tải xuống sẽ được kiểm tra xem có sự hiện diện của người giới thiệu http hay không. Người ta đã chứng minh một cách khoa học rằng nếu bạn tự động tạo một tập lệnh trên trang document.createElement("script") rồi xóa nó khỏi trang, tập lệnh sẽ hoạt động như bình thường nhưng nó sẽ không được lưu. trang có mục đích tải script1.php
    Tìm JS Sau 10 giây, bạn sẽ thấy tập lệnh ẩn hoạt động dưới dạng cảnh báo, hãy nhấp vào liên kết sau cảnh báo để đảm bảo rằng các sự kiện cũng không bị loại bỏ. Tại liên kết này, bạn có thể thấy tập lệnh ẩn script1.php Nhiệm vụ của nó: tải động script2.php nếu có tiêu đề người giới thiệu. Thời gian chờ có thể giảm xuống, tùy thuộc vào thời gian thực thi gần đúng của tập lệnh ẩn.
    script2.php Nhiệm vụ của nó là tạo ra tập lệnh cuối cùng nếu có tiêu đề người giới thiệu
    Kết quả Kết quả là chúng tôi không thể xem mã nguồn của trang cũng như không thể tải xuống hoặc lưu tập lệnh ẩn bằng bốn trình duyệt đã được thử nghiệm. Nói chung, bạn có thể xem nó theo hai cách:
    • Theo liên kết trực tiếp dẫn đến script2.php và nằm trên trang web của chúng tôi;
    • Hình thành một yêu cầu http cho biết tiêu đề của người giới thiệu.
    Bạn có thể tăng hiệu quả của việc ẩn nấp bằng các phương pháp sau:
  • Sử dụng mod-rewrite, thay thế script1.js và script2.js đi tới máy chủ bằng script1.php và script2.php, để trang chứa các tệp js quen thuộc, vì php rất nổi bật;
  • Làm cho kịch bản hư cấu trở nên phức tạp, hợp lý và khó hiểu nhất có thể, để người cố gắng phân tích nó sẽ phải đau khổ tột cùng trước khi nhận ra rằng mình đã bị lừa;
  • Mã xáo trộn.
  • Bạn đã bao giờ muốn ẩn một tập lệnh trên trang của mình khỏi những người lạ khiến một menu đẹp đến phi thực tế xuất hiện hoặc thực hiện các hành động khác mà bạn không muốn sớm thấy trên mỗi trang web thứ hai chưa?
    Nếu có thì phương pháp được nêu trong bài viết này sẽ hữu ích cho bạn cùng với việc làm rối mã. Đồng thời, tôi sẽ khẳng định ngay rằng phương pháp này không hiệu quả 100% nhưng có thể sẽ bảo vệ bạn khỏi hầu hết những người không chuyên và một số chuyên gia.

    Lý thuyết Giả sử chúng ta có một trang nojs.php và trên đó có một tập lệnh secret.js cần được ẩn. Trình duyệt và người dùng có thể nhận tập lệnh từ máy chủ theo các cách sau:
  • Tải tập lệnh được đặt trực tiếp trên trang hoặc được tải bằng DOM;
  • Xem tập lệnh trong cửa sổ Mã nguồn trang;
  • Lưu một trang có tất cả các tệp vào ổ cứng của bạn;
  • Nhập URL trực tiếp vào thanh địa chỉ.
  • Trong trường hợp đầu tiên, trình duyệt phải gửi tiêu đề HTTP HTTP_REFERER.
    Trong trường hợp thứ hai và thứ ba, nó không được truyền bởi tất cả các trình duyệt (Chrome, FireFox hiển thị tập lệnh đã tải xuống trước đó từ bộ đệm; Opera, IE tải lại tập lệnh nhưng không gửi người giới thiệu).
    Trong trường hợp thứ tư, tham chiếu không được truyền bởi bất kỳ trình duyệt nào trong số bốn trình duyệt.
    Nếu chúng tôi phát hành JavaScript một cách linh hoạt và kiểm tra sự hiện diện của tiêu đề người giới thiệu trong yêu cầu, thì chúng tôi sẽ ngay lập tức bảo vệ mình khỏi Opera và IE, nhưng đối với Crome và Firefox, chúng tôi sẽ phải nghĩ ra thứ gì đó phức tạp hơn. Trước tiên, chúng tôi sẽ tải xuống một tập lệnh, sau đó tập lệnh này sẽ tải xuống một tập lệnh khác và cả hai lần tải xuống sẽ được kiểm tra xem có sự hiện diện của người giới thiệu http hay không. Người ta đã chứng minh một cách khoa học rằng nếu bạn tự động tạo một tập lệnh trên trang document.createElement("script") rồi xóa nó khỏi trang, tập lệnh sẽ hoạt động như bình thường nhưng nó sẽ không được lưu. trang có mục đích tải script1.php
    Tìm JS Sau 10 giây, bạn sẽ thấy tập lệnh ẩn hoạt động dưới dạng cảnh báo, hãy nhấp vào liên kết sau cảnh báo để đảm bảo rằng các sự kiện cũng không bị loại bỏ. Tại liên kết này, bạn có thể thấy tập lệnh ẩn script1.php Nhiệm vụ của nó: tải động script2.php nếu có tiêu đề người giới thiệu. Thời gian chờ có thể giảm xuống, tùy thuộc vào thời gian thực thi gần đúng của tập lệnh ẩn.
    script2.php Nhiệm vụ của nó là tạo ra tập lệnh cuối cùng nếu có tiêu đề người giới thiệu
    Kết quả Kết quả là chúng tôi không thể xem mã nguồn của trang cũng như không thể tải xuống hoặc lưu tập lệnh ẩn bằng bốn trình duyệt đã được thử nghiệm. Nói chung, bạn có thể xem nó theo hai cách:
    • Theo liên kết trực tiếp dẫn đến script2.php và nằm trên trang web của chúng tôi;
    • Hình thành một yêu cầu http cho biết tiêu đề của người giới thiệu.
    Bạn có thể tăng hiệu quả của việc ẩn nấp bằng các phương pháp sau:
  • Sử dụng mod-rewrite, thay thế script1.js và script2.js đi tới máy chủ bằng script1.php và script2.php, để trang chứa các tệp js quen thuộc, vì php rất nổi bật;
  • Làm cho kịch bản hư cấu trở nên phức tạp, hợp lý và khó hiểu nhất có thể, để người cố gắng phân tích nó sẽ phải đau khổ tột cùng trước khi nhận ra rằng mình đã bị lừa;
  • Mã xáo trộn.
  • Tuyên bố từ chối trách nhiệm!

    Những gì bạn sẽ thấy bên trong nguồn là những đoạn mã tồi tệ, bạn không nên sử dụng mã này trong các dự án của mình để tránh tất cả những vấn đề mà bản thân tôi đã từng gặp phải. Tất nhiên, nếu bạn là một người bất tử, quyết định sử dụng mã của tôi trong các dự án của mình thì tôi cảnh báo bạn rằng tôi từ chối mọi trách nhiệm về việc sử dụng nó và bất kỳ vấn đề nào bạn có thể gặp phải. Khi đăng các sửa đổi khác nhau của bạn, nếu có, hãy thay đổi tên của chúng vì Police Tools vẫn tồn tại và được nhà phát triển hỗ trợ. Bạn nên xem xét những điều như vậy một cách nghiêm túc vì không ai an toàn trước Takedown và tôi dự định bảo vệ bản quyền trên sản phẩm của mình cho đến khi kết thúc hỗ trợ cho tập lệnh này. tất cả các trang web nói chung. Cảm ơn bạn đã thông cảm!

    Chúc bạn khám phá vui vẻ!

    Chúc bạn ngày mới tốt lành, các bạn dân LUA Hôm nay 01/01/2019 mình xin giới thiệu với các bạn source code full script của mình Công cụ cảnh sát. Để mọi người không chạy đến tạo bản sao đứa con tinh thần của tôi, tôi sẽ nói rằng phiên bản này đã đủ cũ để hệ thống của nó không còn gây nguy hiểm cho dự án chính của tôi nữa. Tôi sẽ nói ngay rằng tôi đăng dự án này ở đây vì... Tôi muốn giúp những người muốn biết LUA học hỏi. Không phải là ngu ngốc khi sao chép mã, đổi tên và chuyển dự án thành của riêng bạn mà là để thu thập kiến ​​​​thức. Tôi, không giống ai khác, hiểu cảm giác bắt đầu hoàn toàn từ đầu mà không cần có ít nhiều một ví dụ điển hình trong tay. Tôi cũng sẽ không nói rằng dự án này là tuyệt vời. Tôi bắt đầu viết nó vào 2017, khi đó bản thân tôi mới bắt đầu tham gia viết kịch bản trên LUA, có thể có những hệ thống khủng khiếp.

    Một phần lớn mã đã được nhận xét, bạn thậm chí không cần phải nhìn vào nó, tôi quá lười để cắt nó ra.


    Tôi khuyên bạn nên đọc toàn bộ chủ đề này, nếu không, rất có thể bạn sẽ không hiểu gì khi mở mã nguồn. Sẵn sàng để đọc? Tôi hy vọng câu trả lời của bạn là tích cực. Hãy bắt đầu. ​


    Bản thân nguồn này bao gồm một số thứ rất khó nắm vững đối với người mới bắt đầu:


    Cửa sổ và lớp phủ ImGUI [giao diện chính]
    Làm việc với mạng [yêu cầu không đồng bộ/yêu cầu HTTP thông thường]
    Làm việc với cấu hình INI [cài đặt tập lệnh]
    Làm việc với hộp thoại nhiều bước [giao diện bổ sung]
    Làm việc với biểu thức chính quy [mẫu lua]
    Một chút công việc với SAMP LUA.


    Bây giờ hãy thảo luận về các phần có vấn đề trong mã nguồn của tôi:


    Mã rất khó hiểu vì ... Tôi đã viết nó được gần ba năm, Chúa phù hộ cho nó.
    Rất nhiều bình luận về cơ bản không có ý nghĩa gì và chỉ là những ghi chú.
    Ở một số nơi có một số lượng lớn các dòng thay vì một dòng có thể có, nhưng điều này không quan trọng.


    Nếu chúng ta nói về những lợi thế, chúng ta có thể nhấn mạnh những điều sau:

    10k mã sạch + 3k bình luận đôi khi hữu ích khác.
    Các hệ thống riêng tư mà tôi đã từng trả số tiền khó kiếm được của mình.
    Hệ thống chất lượng cao có thể đóng vai trò là nguồn cho các chức năng mạng.


    Tôi cũng sẽ đơn giản hóa công việc của bạn và liệt kê các chức năng thú vị:

    Tự động nhập vai vũ khí.

    Có thể tìm thấy trong phần chính, bình luận [ WEAPON_FUNCTION_BEGIN ]. ​

    Hệ thống yêu cầu không đồng bộ theo chu kỳ được thiết kế lại một chút.

    Có thể tìm thấy thông qua chức năng tìm kiếm [loop_async_http_request]. ​

    Một hệ thống trò chuyện bằng kịch bản đầy đủ với các chức năng trên.

    Có thể tìm thấy trên dòng [3985] hoặc bằng key. từ [getmsg2.php]. ​

    Một cơ sở dữ liệu đầy đủ của Bộ Nội vụ sẽ làm ví dụ.

    Có thể tìm thấy trên dòng [8124] hoặc bằng khóa. từ [cmd_database]. ​

    Một hệ thống kết dính chính thức trong tập lệnh có thẻ.

    Mini MVDHelper, như nhiều người tin tưởng, có thể được tìm thấy xuyên suốt kịch bản.


    Mã nguồn này sử dụng các thư viện sau:

    Samp.lua
    imgui thân mến
    ký ức
    mã hóa [ tương ứng cho ImGUI ] ​



    Có lẽ tôi sẽ bổ sung thêm thông tin hữu ích và thú vị cho chủ đề này. Bạn hiểu không, đêm sau Tết bao giờ cũng khó khăn. Nếu tôi quên thêm nội dung nào đó và bạn đã tìm thấy trong nguồn thì hãy viết vào chủ đề, tôi sẽ rất biết ơn bạn. Tôi hy vọng rằng với mã nguồn của mình, tôi có thể giúp đỡ ít nhất một số người đang bắt đầu nghiên cứu LUA hoặc đang cố gắng viết tập lệnh đầu tiên của họ. Nếu bạn có thắc mắc về nguồn, bạn cũng có thể hỏi họ trong chủ đề này. Nếu bạn muốn để lại đánh giá, vui lòng tiếp tục, toàn bộ chủ đề là do bạn tùy ý sử dụng. Và để tôi nhắc lại một lần nữa rằng tôi bắt đầu viết kịch bản này khi mới học nên các bạn không nên chê bai nó quá nhiều. Tất cả chúng ta đều là con người, tất cả chúng ta đều mắc sai lầm theo cách này hay cách khác. Một yêu cầu rất lớn, hãy tạo các tập lệnh độc đáo, không lặp lại theo những tập lệnh khác, tất nhiên trừ khi bạn học từ ví dụ của người khác. Hãy nhớ rằng, nếu điều gì đó không suôn sẻ với bạn, hãy cố gắng hơn nữa - một ngày nào đó bạn chắc chắn sẽ thành công nếu bạn không bỏ cuộc. Đừng cố đóng mã của bạn, hãy cho mọi người thấy khả năng của bạn. Suy cho cùng, đây là cách duy nhất để họ có thể nhận ra bạn là người có thể viết mã và không ngại thể hiện điều đó. Tôi hiểu rằng tôi không phải là người đầu tiên xuất bản một dự án lớn, nhưng tôi cũng hy vọng rằng mình không phải là người cuối cùng làm điều đó. Chà, Pavel Garson đã liên lạc với bạn, học tập và đạt được mọi thứ bạn muốn. Và vâng, tôi cung cấp nguồn này để xem xét chứ không phải để sao chép trắng trợn. Nếu bạn sao chép nó, hãy viết nơi bạn lấy nó. Và cảm ơn mọi người.


    Thực ra tôi nghĩ bạn hoàn toàn không quan tâm đến những gì tôi viết ở trên, bạn chỉ đang tìm kiếm nguồn mà thôi.
    Rất trân trọng những người đã đọc toàn bộ văn bản mà tôi nghĩ ra sau Tết =))

    Rất đơn giản - chỉ cần nhấp chuột phải vào nó và chọn mục thích hợp trong menu ngữ cảnh. Từ ngữ có thể khác nhau tùy thuộc vào trình duyệt bạn đang sử dụng: trong Mozilla Firefox, nó được gọi là "Nguồn", trong Apple Safari - "Xem nguồn", trong Google Chrome - "Xem mã trang", trong Opera - "Mã nguồn", trong Internet Explorer - " Xem mã HTML."

    Không thể lấy được mã nguồn của tập lệnh máy chủ tạo mã HTML của trang bằng phần mềm máy chủ được cấu hình thông thường chỉ bằng một yêu cầu đơn giản. Bạn chỉ có thể xem mã nguồn của các tập lệnh PHP hoặc Perl bằng cách tải xuống các tệp của chúng qua giao thức FTP hoặc thông qua trình quản lý tệp của bảng điều khiển lưu trữ hoặc hệ thống quản lý trang web. Bạn có thể mở các tệp như vậy bằng trình soạn thảo văn bản thông thường.

    Có thể xem mã nguồn của các tập lệnh phía máy khách chạy trực tiếp trong trình duyệt (ví dụ: JavaScript) bằng cách trích xuất các tệp của chúng từ bộ đệm của trình duyệt. Và việc lưu các trang có tất cả các tệp đi kèm vào một vị trí cụ thể thậm chí còn dễ dàng hơn. Trong trường hợp này, bạn sẽ không phải tìm hiểu kỹ mọi thứ được lưu trong bộ đệm. Để thực hiện việc này, trong bất kỳ trình duyệt nào, bạn cần nhấn tổ hợp phím CTRL + S, sau đó trong trường “Loại tệp”, chọn “Trang web đầy đủ”. Bạn cũng có thể mở tệp có phần mở rộng js chứa mã nguồn của tập lệnh bằng trình soạn thảo văn bản thông thường.

    Mã nguồn của phim Flash được trình duyệt tải xuống máy tính của bạn không dễ xem. Trình duyệt không nhận được mã nguồn mà chỉ nhận được phiên bản được biên dịch - mã thực thi. Tuy nhiên, có những chương trình dịch ngược có thể thực hiện quy trình chuyển đổi ngược. Ví dụ: Flash Decompiler của Trillix được tích hợp vào trình duyệt của bạn và cho phép bạn trích xuất một đối tượng Flash từ một trang và lưu nó. Sau đó, khi mở flash trong trình dịch ngược, bạn sẽ có quyền truy cập vào các thành phần riêng lẻ của nó - hình ảnh, tập lệnh, âm thanh, v.v. Tất nhiên, mã này sẽ không hoàn toàn tương ứng với mã nguồn của tác giả mà chỉ ở mức độ chính xác đủ để hoạt động.

    “Mã nguồn” thường đề cập đến mã của chương trình bằng ngôn ngữ lập trình (cấp cao) mà con người có thể đọc được. Có mã này, bạn có thể thực hiện các thay đổi đối với chương trình (tập lệnh, phim flash, ứng dụng java, chương trình ứng dụng, v.v.). Tác giả hoặc nhà phân phối chương trình sẽ xác định xem có phân phối mã nguồn cùng với sản phẩm hoàn chỉnh hay không. Có cả một lớp ứng dụng được phân phối “nguồn mở”, mã nguồn của các chương trình khác (ví dụ: tập lệnh JavaScript hoặc trang HTML) theo định nghĩa không thể bị ẩn và mã nguồn của các chương trình khác phải tuân theo bản quyền.

    Hướng dẫn

    Lấy mã nguồn mở của ứng dụng trên website của tác giả hoặc nhà phân phối sản phẩm phần mềm này. Bạn thường có thể tìm ra địa chỉ trang web trong phần menu có tên “Trợ giúp” nếu bạn chọn mục “Giới thiệu về chương trình” trong đó.

    Nhấp chuột phải vào một trang web nếu bạn muốn truy cập mã nguồn của nó. Trong bất kỳ trình duyệt nào, menu ngữ cảnh bật lên sẽ chứa lệnh xem nguồn, mặc dù cách diễn đạt có thể thay đổi một chút. Bạn có thể thực hiện mà không cần menu ngữ cảnh - tổ hợp phím ctrl + u sao chép lệnh gọi đến lệnh xem nguồn. Một số trình duyệt có công cụ xem tích hợp (Mozilla Firefox, Google Chrome), một số trình duyệt khác sử dụng các chương trình bên ngoài cho việc này - thường là Notepad. Bạn có thể lưu nguồn trang thu được theo cách này vào một tệp.