Чи можна приховати код Javascript із html веб-сторінки, коли вихідний код переглядається через браузер Переглянути вихідну функцію?
Я знаю, що можна затушувати код, але я хотів би, щоб він був прихований від функції джерела перегляду.
Чи можна приховати код Javascript із html веб-сторінки, коли вихідний код переглядається через браузер Переглянути вихідну функцію?
Я знаю, що можна затушувати код, але я хотів би, щоб він був прихований від функції джерела перегляду.
Відповіді:
Я не впевнений, що хтось насправді звертався безпосередньо до вашого питання, а саме до коду, який переглядається за допомогою команди Переглянути джерело браузера.
Як вже говорили інші, немає способу захистити javascript, призначений для запуску в браузері, від певного глядача. Якщо браузер може його запустити, тоді будь-яка рішуча особа може також переглянути та запустити його.
Але якщо ви помістите свій javascript у зовнішній файл javascript, який входить до складу:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
тегів, тоді код JavaScript не буде відразу видно за допомогою команди Переглянути джерело - таким чином буде видно лише сам тег сценарію. Це не означає, що хтось не може просто завантажити цей зовнішній файл javascript, щоб побачити його, але ви запитали, як уникнути його в команді Переглянути джерело браузера, і це зробить це.
Якщо ви хотіли б зробити так, щоб він більше працював над переглядом джерела, ви зробили б усе наступне:
Попри все сказане, я думаю, вам слід зосередитися на продуктивності, надійності та зробити свій додаток чудовим. Якщо вам обов’язково потрібно захистити якийсь алгоритм, покладіть його на сервер, але крім цього, змагайтеся за те, щоб бути кращим у вас, а не за допомогою секретів. Це в кінцевому підсумку так чи інакше працює успіх в Інтернеті.
<script>
буде тримати його з View Source краще (ще видно під живий DOM) - тобто, він не може бути просто «право натиснув на" в Source View. Можливо, згаданий <script>
елемент може бути видалений після виконання JavaScript, що робить трохи громіздкішим (але неможливим) отримання вихідного коду ... звичайно, чистий трафік дуже легко відображатиметься у Firebug чи тому подібному ;-)
Ні, це неможливо.
Якщо ви не надаєте його браузеру, то у браузері його немає.
Якщо ви це зробите, то воно (або посилання на нього, за яким легко слідувати) є частиною джерела.
Моє рішення натхнене останнім коментарем. Це код invisible.html
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>
Ясний код invisible_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();});
Зверніть увагу, що наприкінці я видаляю створений сценарій. invisible.js це:
$(document).ready(function(){
alert('try to find in the source the js script which did this alert!');
document.write('It disappeared, my dear!');});
invisible.js не відображається в консолі, оскільки його було видалено, а ніколи - у вихідному коді, оскільки створено за допомогою javascript.
Щодо invisible_debut.js, я затуманив його, а це означає, що знайти URL-адресу invisible.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 та зробіть це як у прикладі вище.
А також цей Encrypter не завжди працює в якомусь коді, що змусить ваш веб-сайт заплутатися ... Виберіть найкращу частину, яку ви хочете сховати, як, наприклад, у <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, а потім викличте звідти інший 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>")
});
Не можливо!
Єдиний спосіб - заплутати javascript або зменшити ваш javascript, що ускладнює для кінцевого користувача зворотне проектування. однак не неможливо здійснити зворотне проектування.
Підхід, який я використовував кілька років тому -
Нам потрібен файл jsp, файл сервлета Java і файл фільтра java.
Надайте користувачеві доступ до jsp-файлу. URL-адреса типу користувача jsp-файлу.
Випадок 1 -
Використовуючи Printwriter, він надасть відповідь користувачеві.
Тим часом Servlet створить файл ключа.
Коли сервлет намагається виконати в ньому файл xxxx.js, фільтр
активує і виявить, що файл ключа існує, а отже, видалить
файл ключа .
Таким чином, один цикл закінчений.
Коротше кажучи, файл ключа буде створений сервером і буде негайно видалений фільтром.
Це відбуватиметься при кожному ударі.
Випадок 2 -
Замість створення файлу можна використовувати значення налаштування у змінній сеансу.