Có thể ẩn mã Javascript khỏi html của trang web khi mã nguồn được xem thông qua tính năng Xem nguồn của trình duyệt không?
Tôi biết có thể làm xáo trộn mã, nhưng tôi muốn nó bị ẩn khỏi tính năng nguồn xem.
Có thể ẩn mã Javascript khỏi html của trang web khi mã nguồn được xem thông qua tính năng Xem nguồn của trình duyệt không?
Tôi biết có thể làm xáo trộn mã, nhưng tôi muốn nó bị ẩn khỏi tính năng nguồn xem.
Câu trả lời:
Tôi không chắc có ai khác thực sự giải quyết trực tiếp câu hỏi của bạn, đó là mã đang được xem từ lệnh View Source của trình duyệt.
Như những người khác đã nói, không có cách nào để bảo vệ javascript dự định chạy trong trình duyệt khỏi một người xem xác định. Nếu trình duyệt có thể chạy nó, thì bất kỳ người nào được xác định cũng có thể xem / chạy nó.
Tuy nhiên, nếu bạn đặt javascript của mình vào một tệp javascript bên ngoài được bao gồm với:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
thì mã javascript sẽ không hiển thị ngay lập tức với lệnh View Source - chỉ bản thân thẻ script mới hiển thị theo cách đó. Điều đó không có nghĩa là ai đó không thể chỉ tải tệp javascript bên ngoài đó để xem nó, nhưng bạn đã hỏi làm thế nào để ngăn nó khỏi lệnh View Source của trình duyệt và điều này sẽ thực hiện được.
Nếu bạn muốn thực sự làm cho việc xem nguồn hoạt động hiệu quả hơn, bạn sẽ thực hiện tất cả những việc sau:
Với tất cả những gì đã nói, tôi nghĩ bạn nên tập trung vào hiệu suất, độ tin cậy và làm cho ứng dụng của bạn trở nên tuyệt vời. Nếu bạn hoàn toàn phải bảo vệ thuật toán nào đó, hãy đưa nó lên máy chủ, nhưng ngoài ra, hãy cạnh tranh để trở thành người giỏi nhất mà bạn làm, không phải bằng cách có bí mật. Dù sao thì đó cũng là cách thành công hoạt động trên web.
<script>
sẽ giữ nó ra khỏi View Source tốt hơn (vẫn có thể nhìn thấy dưới DOM sống) - có nghĩa là, nó có thể không chỉ là "phải nhấp vào" trong Source View. Có thể <script>
phần tử đã nói sẽ bị xóa khi JavaScript được thực thi, khiến nó hơi cồng kềnh hơn (nhưng không phải là không thể) để lấy mã gốc ... tất nhiên lưu lượng truy cập ròng sẽ hiển thị rất dễ dàng trong Firebug hoặc tương tự ;-)
Không, không thể.
Nếu bạn không đưa nó cho trình duyệt, thì trình duyệt không có nó.
Nếu bạn làm vậy, thì nó (hoặc một tham chiếu dễ theo dõi đến nó) sẽ tạo thành một phần của nguồn.
Giải pháp của tôi được lấy cảm hứng từ nhận xét cuối cùng. Đây là mã của hidden.html
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>
Mã rõ ràng của hidden_debut.js là:
$(document).ready(function () {
var ga = document.createElement("script"); //ga is to remember Google Analytics ;-)
ga.type = 'text/javascript';
ga.src = 'invisible.js';
ga.id = 'invisible';
document.body.appendChild(ga);
$('#invisible').remove();});
Lưu ý rằng ở phần cuối, tôi đang xóa tập lệnh đã tạo. vô hình.js là:
$(document).ready(function(){
alert('try to find in the source the js script which did this alert!');
document.write('It disappeared, my dear!');});
vô hình.js không xuất hiện trong bảng điều khiển vì nó đã bị xóa và không bao giờ có trong mã nguồn vì được tạo bởi javascript.
Liên quan đến hidden_debut.js, tôi đã nhầm lẫn nó, có nghĩa là rất phức tạp để tìm ra url của hidden.js. Không hoàn hảo, nhưng cũng khó đối với một hacker bình thường.
invisible.js
trong các nguồn. Phiên bản Chrome 34.0.1847.131 m
Sử dụng mã hóa Html Phần của đầu có
<link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" />
<script type="text/javascript" src="script/js.js" language="javascript"></script>
copy and paste it to HTML Encrypter and the Result will goes like this
and paste it the location where you cut the above sample
<Script Language='Javascript'>
<!-- HTML Encryption provided by iWEBTOOL.com -->
<!--
document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A'));
//-->
HTML ENCRYPTOR Lưu ý: nếu bạn có tập lệnh java trong trang của mình, hãy thử xuất sang tệp .js và làm cho nó giống như ví dụ ở trên.
Và ngoài ra Mã hóa này không phải lúc nào cũng hoạt động trong một số mã sẽ làm cho trang web của bạn bị rối ... Chọn phần tốt nhất mà bạn muốn ẩn, chẳng hạn như trong <form> </form>
Điều này có thể được đảo ngược bởi người dùng trước nhưng không phải tất cả noob như tôi đều biết nó.
Hy vọng điều này sẽ giúp
Tôi không chắc có cách nào để giấu thông tin đó. Bất kể bạn làm gì để làm xáo trộn hoặc ẩn bất cứ điều gì bạn đang làm trong JavaScript, thì thực tế là trình duyệt của bạn cần tải nó để sử dụng nó. Các trình duyệt hiện đại có các công cụ gỡ lỗi / phân tích web giúp việc trích xuất và xem các tập lệnh trở nên đơn giản ( F12chẳng hạn như trong Chrome).
Nếu bạn lo lắng về việc tiết lộ một số loại bí mật thương mại hoặc thuật toán, thì cách duy nhất của bạn là đóng gói logic đó trong một lệnh gọi dịch vụ web và yêu cầu trang của bạn gọi chức năng đó thông qua AJAX.
'Không thể!'
Ồ, là nó đấy ....
//------------------------------
function unloadJS(scriptName) {
var head = document.getElementsByTagName('head').item(0);
var js = document.getElementById(scriptName);
js.parentNode.removeChild(js);
}
//----------------------
function unloadAllJS() {
var jsArray = new Array();
jsArray = document.getElementsByTagName('script');
for (i = 0; i < jsArray.length; i++){
if (jsArray[i].id){
unloadJS(jsArray[i].id)
}else{
jsArray[i].parentNode.removeChild(jsArray[i]);
}
}
}
Tôi nghĩ rằng tôi đã tìm thấy giải pháp để ẩn một số mã JavaScript nhất định trong nguồn xem của trình duyệt. Nhưng bạn phải sử dụng jQuery để làm điều này.
Ví dụ:
Trong index.php của bạn
<head>
<script language = 'javascript' src = 'jquery.js'></script>
<script language = 'javascript' src = 'js.js'></script>
</head>
<body>
<a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a>
<div id = "content">
</div>
</body>
Bạn tải một tệp trong phần thân html / php được gọi bởi một hàm jquery trong tệp js.js.
js.js
function loaddiv()
{$('#content').load('content.php');}
Đây là mẹo.
Trong tệp content.php của bạn, hãy đặt một thẻ head khác sau đó gọi một tệp js khác từ đó.
content.php
<head>
<script language = 'javascript' src = 'js2.js'></script>
</head>
<a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a>
<div id = "content2">
</div>
trong tệp js2.js tạo bất kỳ chức năng nào bạn muốn.
thí dụ:
js2.js
function loaddiv2()
{$('#content2').load('content2.php');}
content2.php
<?php
echo "Test 2";
?>
Vui lòng theo liên kết sau đó sao chép và dán nó vào tên tệp của jquery.js
http://dl.dropbox.com/u/36557803/jquery.js
Tôi hi vọng cái này giúp được.
Bạn có thể sử dụng document.write
.
Không có jQuery
<!DOCTYPE html>
<html>
<head><meta charset=utf-8></head>
<body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');">
</body></html>
Hoặc với jQuery
$(function () {
document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>")
});
Không có khả năng!
Cách duy nhất là làm xáo trộn javascript hoặc rút gọn javascript của bạn, điều này khiến người dùng cuối khó thiết kế ngược. tuy nhiên nó không phải là không thể thiết kế ngược lại.
Cách tiếp cận tôi đã sử dụng cách đây vài năm -
Chúng tôi cần một tệp jsp, một tệp java servlet và một tệp java bộ lọc.
Cấp quyền truy cập tệp jsp cho người dùng. Người dùng nhập url của tệp jsp.
Trường hợp 1 -
Sử dụng Printwriter, nó sẽ hiển thị phản hồi cho người dùng.
Trong khi đó, Servlet sẽ tạo một tệp khóa.
Khi servlet cố gắng thực thi tệp xxxx.js bên trong nó, Bộ lọc
sẽ kích hoạt và sẽ phát hiện tệp khóa tồn tại và do đó xóa
tệp khóa .
Như vậy một chu kỳ đã kết thúc.
Tóm lại, tệp khóa sẽ được tạo bởi máy chủ và sẽ bị xóa ngay lập tức bằng bộ lọc.
Điều này sẽ xảy ra sau mỗi cú đánh.
Trường hợp 2 -
Thay vì tạo tệp, người ta có thể sử dụng giá trị cài đặt trong biến phiên.