เป็นไปได้ไหมที่จะซ่อนโค้ด Javascript จาก html ของหน้าเว็บเมื่อดูซอร์สโค้ดผ่านฟีเจอร์ View Source ของเบราว์เซอร์
ฉันรู้ว่ามันเป็นไปได้ที่จะทำให้โค้ดสับสน แต่ฉันอยากให้โค้ดนี้ถูกซ่อนจากคุณสมบัติของมุมมองแหล่งที่มา
เป็นไปได้ไหมที่จะซ่อนโค้ด Javascript จาก html ของหน้าเว็บเมื่อดูซอร์สโค้ดผ่านฟีเจอร์ View Source ของเบราว์เซอร์
ฉันรู้ว่ามันเป็นไปได้ที่จะทำให้โค้ดสับสน แต่ฉันอยากให้โค้ดนี้ถูกซ่อนจากคุณสมบัติของมุมมองแหล่งที่มา
คำตอบ:
ฉันไม่แน่ใจว่ามีใครตอบคำถามของคุณโดยตรงซึ่งเป็นรหัสที่ดูจากคำสั่ง View Source ของเบราว์เซอร์
ดังที่คนอื่น ๆ กล่าวไว้ไม่มีวิธีใดที่จะป้องกันจาวาสคริปต์ที่ตั้งใจจะเรียกใช้ในเบราว์เซอร์จากโปรแกรมดูที่กำหนด หากเบราว์เซอร์สามารถเรียกใช้งานได้บุคคลที่กำหนดสามารถดู / เรียกใช้งานได้เช่นกัน
แต่ถ้าคุณใส่จาวาสคริปต์ของคุณในไฟล์จาวาสคริปต์ภายนอกที่มาพร้อมกับ:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
แท็กจากนั้นโค้ดจาวาสคริปต์จะไม่สามารถมองเห็นได้ทันทีด้วยคำสั่ง View Source - เฉพาะแท็กสคริปต์เท่านั้นที่จะมองเห็นได้ด้วยวิธีนั้น นั่นไม่ได้หมายความว่าใครบางคนไม่สามารถโหลดไฟล์ javascript ภายนอกนั้นเพื่อดูได้ แต่คุณถามวิธีป้องกันไม่ให้คำสั่ง View Source ของเบราว์เซอร์และสิ่งนี้จะทำ
หากคุณต้องการทำให้การดูแหล่งที่มาทำงานได้ดีขึ้นจริงๆคุณต้องดำเนินการดังต่อไปนี้:
จากทั้งหมดที่กล่าวมาฉันคิดว่าคุณควรมุ่งเน้นไปที่ประสิทธิภาพความน่าเชื่อถือและทำให้แอปของคุณยอดเยี่ยม หากคุณต้องปกป้องอัลกอริทึมบางอย่างอย่างแน่นอนให้วางไว้บนเซิร์ฟเวอร์ แต่นอกเหนือจากนั้นให้แข่งขันเพื่อเป็นสิ่งที่ดีที่สุดที่คุณทำได้ไม่ใช่โดยการมีความลับ นั่นคือความสำเร็จบนเว็บในท้ายที่สุด
<script>
นี้จะทำให้ไม่สามารถมองเห็นแหล่งที่มาได้ดีกว่า (ยังคงมองเห็นได้ภายใต้ DOM ที่ใช้งานอยู่) นั่นคือไม่สามารถ "คลิกขวาที่" ในมุมมองแหล่งที่มาได้ อาจเป็นไปได้ที่<script>
องค์ประกอบดังกล่าวจะถูกลบออกเมื่อเรียกใช้ JavaScript ทำให้ยุ่งยากกว่าเล็กน้อย (แต่ไม่เป็นไปไม่ได้) ในการรับรหัสดั้งเดิม ... แน่นอนว่าปริมาณการใช้งานสุทธิจะปรากฏขึ้นอย่างรวดเร็วใน Firebug หรือที่คล้ายกัน ;-)
ไม่เป็นไปไม่ได้
หากคุณไม่ได้มอบให้กับเบราว์เซอร์แสดงว่าเบราว์เซอร์ไม่มี
หากคุณทำเช่นนั้น (หรือการอ้างอิงที่ติดตามได้ง่าย) จะเป็นส่วนหนึ่งของแหล่งที่มา
วิธีแก้ปัญหาของฉันได้รับแรงบันดาลใจจากความคิดเห็นล่าสุด นี่คือรหัสของvisible.html
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>
รหัสที่ชัดเจนของvisible_debut.jsคือ:
$(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();});
สังเกตว่าในตอนท้ายฉันจะลบสคริปต์ที่สร้างขึ้น ล่องหน js คือ:
$(document).ready(function(){
alert('try to find in the source the js script which did this alert!');
document.write('It disappeared, my dear!');});
ล่องหน js ไม่ปรากฏในคอนโซลเนื่องจากถูกลบออกและไม่เคยอยู่ในซอร์สโค้ดเนื่องจากสร้างโดยจาวาสคริปต์
เกี่ยวกับvisible_debut.jsฉันทำให้สับสนซึ่งหมายความว่าการค้นหา url ของvisible.jsนั้นซับซ้อนมาก ไม่สมบูรณ์แบบ แต่ก็ยากพอสำหรับแฮ็กเกอร์ทั่วไป
invisible.js
แหล่งข้อมูลได้ Chrome เวอร์ชัน 34.0.1847.131 ม.
ใช้ Html Encrypter ส่วนของ Head ที่มี
<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 ENCRYPTER หมายเหตุ: หากคุณมีสคริปต์ java ในเพจของคุณให้ลองเอ็กซ์พอร์ตไปยังไฟล์. js และทำให้เหมือนกับตัวอย่างด้านบน
และนอกจากนี้ตัวเข้ารหัสนี้ยังไม่ทำงานในบางโค้ดที่จะทำให้เว็บไซต์ของคุณยุ่งเหยิง ... เลือกส่วนที่ดีที่สุดที่คุณต้องการซ่อนเช่นใน <form> </form>
สิ่งนี้สามารถย้อนกลับได้โดยผู้ใช้ล่วงหน้า แต่ไม่ใช่ทุกคนอย่างฉันที่รู้
หวังว่านี่จะช่วยได้
ฉันไม่แน่ใจว่ามีวิธีซ่อนข้อมูลดังกล่าว ไม่ว่าคุณจะทำอะไรเพื่อทำให้สับสนหรือซ่อนสิ่งที่คุณทำใน JavaScript แต่ก็ยังคงเป็นข้อเท็จจริงที่ว่าเบราว์เซอร์ของคุณจำเป็นต้องโหลดเพื่อใช้งาน เบราว์เซอร์สมัยใหม่มีเครื่องมือแก้ไขจุดบกพร่อง / วิเคราะห์เว็บนอกกรอบซึ่งทำให้การแยกและดูสคริปต์เป็นเรื่องเล็กน้อย (เช่นF12ใน Chrome เท่านั้น)
หากคุณกังวลเกี่ยวกับการเปิดเผยความลับทางการค้าหรืออัลกอริทึมบางประเภทการขอความช่วยเหลือเพียงอย่างเดียวของคุณคือการสรุปตรรกะนั้นในการเรียกใช้บริการเว็บและให้เพจของคุณเรียกใช้ฟังก์ชันนั้นผ่าน AJAX
'เป็นไปไม่ได้!'
โอ้ใช่แล้ว ....
//------------------------------
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]);
}
}
}
ฉันคิดว่าฉันพบวิธีแก้ปัญหาในการซ่อนโค้ด JavaScript บางอย่างในมุมมองซอร์สของเบราว์เซอร์ แต่คุณต้องใช้ jQuery เพื่อทำสิ่งนี้
ตัวอย่างเช่น:
ใน index.php ของคุณ
<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>
คุณโหลดไฟล์ในเนื้อหา html / php ที่เรียกโดยฟังก์ชัน jquery ในไฟล์ js.js
js.js
function loaddiv()
{$('#content').load('content.php');}
นี่คือเคล็ดลับ
ในไฟล์ content.php ของคุณให้ใส่ head tag อื่นจากนั้นเรียกไฟล์ js อื่นจากที่นั่น
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>
ในไฟล์ js2.js สร้างฟังก์ชันที่คุณต้องการ
ตัวอย่าง:
js2.js
function loaddiv2()
{$('#content2').load('content2.php');}
content2.php
<?php
echo "Test 2";
?>
กรุณาไปที่ลิงค์จากนั้นคัดลอกวางในชื่อไฟล์ของ jquery.js
http://dl.dropbox.com/u/36557803/jquery.js
ฉันหวังว่านี่จะช่วยได้.
คุณสามารถใช้document.write
.
ไม่มี 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>
หรือด้วย 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>")
});
เป็นไปไม่ได้!
วิธีเดียวคือทำให้จาวาสคริปต์สับสนหรือลดขนาดจาวาสคริปต์ของคุณซึ่งทำให้ผู้ใช้ปลายทางทำวิศวกรรมย้อนกลับได้ยาก อย่างไรก็ตามมันเป็นไปไม่ได้ที่จะทำวิศวกรรมย้อนกลับ
แนวทางที่ฉันใช้เมื่อหลายปีก่อน -
เราต้องการไฟล์ jsp ไฟล์ servlet java และไฟล์ java ตัวกรอง
ให้สิทธิ์การเข้าถึงไฟล์ jsp แก่ผู้ใช้ ประเภทผู้ใช้ url ของไฟล์ jsp
กรณีที่ 1 -
เมื่อใช้ Printwriter จะแสดงการตอบสนองต่อผู้ใช้
ในขณะเดียวกัน Servlet จะสร้างไฟล์คีย์
เมื่อ servlet พยายามเรียกใช้ไฟล์ xxxx.js ภายในตัวกรอง
จะเปิดใช้งานและจะตรวจพบไฟล์คีย์ที่มีอยู่และด้วยเหตุนี้จึงลบ
ไฟล์คีย์
หนึ่งรอบจึงจบลง
ในระยะสั้นไฟล์คีย์จะสร้างโดยเซิร์ฟเวอร์และจะถูกลบทันทีโดยตัวกรอง
สิ่งนี้จะเกิดขึ้นทุกครั้งที่เข้าชม
กรณีที่ 2 -
แทนที่จะสร้างไฟล์เราอาจใช้ค่าการตั้งค่าในตัวแปรเซสชัน
ใส่ JavaScript ของคุณลงในไฟล์. js แยกจากกันและใช้การรวมและการย่อขนาดเพื่อปิดบังโค้ด