Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрытие кода JavaScript
 
 автор: RadjaxteN   (30.08.2006 в 08:37)   письмо автору
 
 

А возможно ли сделать так, чтобы пользователь, который смотрит мой сайт, на одной из страничек не мог просмотреть код JavaScript, но чтобы он выполнялся ???

   
 
 автор: coloboc66   (30.08.2006 в 09:32)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 08:37)
 

Есть программы шифрования кода. Наберите в Гугле html guard или html crypt. Исходный код на странице виден не будет. Но от особо продвинутых эти проги все-равно не спасут, насколько я понимаю...

   
 
 автор: RadjaxteN   (30.08.2006 в 10:59)   письмо автору
 
   для: coloboc66   (30.08.2006 в 09:32)
 

Я вижу только ShareWare версии, а бесплатных нет...( Может кто-нибудь кинет HTMLGuard???

   
 
 автор: AlexSol   (30.08.2006 в 11:03)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 10:59)
 

все это баловство! Вы действительно делаете уникальный продукт нуждающийся в защите?

   
 
 автор: RadjaxteN   (30.08.2006 в 11:05)   письмо автору
 
   для: AlexSol   (30.08.2006 в 11:03)
 

ДА

   
 
 автор: RadjaxteN   (30.08.2006 в 11:06)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 11:05)
 

Хотя бы киньте сылку с бесплатной версией программы.

   
 
 автор: AlexSol   (30.08.2006 в 11:11)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 11:05)
 

а вы юморист! может тогда не стоит его в сеть выкладывать? указанные программы просто делают код менее читабельным. Если ваш проект уникален, то сразу найдется множество человек, которые приведут код в нормальное состояние + коментарии напишут.

----
а вот представьте, что разработчики упомянутых прог тоже считают их уникальными и денег за их использование хотят получить ...

   
 
 автор: AlexSol   (30.08.2006 в 11:12)   письмо автору
 
   для: AlexSol   (30.08.2006 в 11:11)
 

http://astalavista.us/

   
 
 автор: RadjaxteN   (30.08.2006 в 11:21)   письмо автору
 
   для: AlexSol   (30.08.2006 в 11:12)
 

Большое спасибо

   
 
 автор: ExtraBrain   (30.08.2006 в 12:08)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 08:37)
 

Нужно AJAXом подгрузить нужный код, даже HTML можно, и он будет выполнятся но исходника не видно будет

   
 
 автор: AlexSol   (30.08.2006 в 12:20)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 12:08)
 

может пример приведете?

   
 
 автор: ExtraBrain   (30.08.2006 в 12:37)   письмо автору
 
   для: AlexSol   (30.08.2006 в 12:20)
 


document.getElementById("div1").innerHTML=То что пришло посредством AJAX

.....
<body>
<div id="div1">
</div>
</body>

   
 
 автор: AlexSol   (30.08.2006 в 12:57)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 12:37)
 

не мог просмотреть код JavaScript

   
 
 автор: ExtraBrain   (30.08.2006 в 13:07)   письмо автору
 
   для: AlexSol   (30.08.2006 в 12:57)
 

Ну так то что придёт от AJAX и будет содержать JS который не желателен к показу. А JS который нужен для работы с AJAX не нужно секретить он и так всем известен.

вот что можно например прислать с помощью AJAX и запихнуть его внутрь дива

<script>
function SuperSecret() {
....
}
</script>
<a href="#" onClick="SuperSecret()">Секрет</a>


И исходника функции SuperSecret() не будет видно

   
 
 автор: RadjaxteN   (30.08.2006 в 13:16)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 13:07)
 

КРУТО !!!

   
 
 автор: RadjaxteN   (30.08.2006 в 13:31)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 13:16)
 

Если я правильно понял, то:

<div id="divl">
//то, что мы хотим скрыть
</div>

???

   
 
 автор: ExtraBrain   (30.08.2006 в 13:52)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 13:31)
 

>Если я правильно понял, то:
>

><div id="divl">
>//то, что мы хотим скрыть
></div>
>

>???

Да, только оно туда пишется не сразу. После того как страница уже загружена содержимое дива переписывается тем что получено от AJAX.

При просмотре исходника юзер будет видеть по прежнему <div id="div1"></div> и больше ничего, а на экране будет видна загруженная через AJAX страница.

   
 
 автор: CrazyAngel   (30.08.2006 в 13:35)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 13:07)
 

Смотрите как тут делать, смотрим исходник, обана вот тут написано куда скрипт обращаеться за javascript ом, дайка я адресок скопирую, и напрямую его открою да получу исходный код хехе, думаю идея понятна)))
P.S. скрипт на javascript или другом клиентском языке скрыть нельзя так как его юзер по любому себе на комп качает, а что он качает то он может посмотреть)))

для таких целей серверные языки существуют!!!

   
 
 автор: RadjaxteN   (30.08.2006 в 13:40)   письмо автору
 
   для: CrazyAngel   (30.08.2006 в 13:35)
 

Допустим сервер кодирует скрипт, а клиентский компьютер его раскодирует и выполнит. Через блокнот скрипт уже не посмотришь... Хоть какая-то защита....

   
 
 автор: RadjaxteN   (30.08.2006 в 13:41)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 13:40)
 

JavaScript это не PHP и не ASP это "дополнение" к ним и альтернативы нет, а безопасность нужна каждому...

   
 
 автор: CrazyAngel   (30.08.2006 в 13:44)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 13:41)
 

непонял, почему не посмотришь....?!

   
 
 автор: AlexSol   (30.08.2006 в 13:45)   письмо автору
 
   для: CrazyAngel   (30.08.2006 в 13:44)
 

Допустим сервер кодирует скрипт, а клиентский компьютер его раскодирует

как? функцие тогоже javascript?

   
 
 автор: CrazyAngel   (30.08.2006 в 13:47)   письмо автору
 
   для: CrazyAngel   (30.08.2006 в 13:44)
 

.... делать нужные запросы на ajax! php их обрабатывает, на выходите обыных html который мы вставляем....

   
 
 автор: RadjaxteN   (30.08.2006 в 13:48)   письмо автору
 
   для: CrazyAngel   (30.08.2006 в 13:44)
 

Выше прочтите...я совсем уже запутался....ExtraBrain разъесни!!!

   
 
 автор: AlexSol   (30.08.2006 в 13:51)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 13:48)
 

>>Нужно AJAXом подгрузить нужный код, даже HTML можно, и он будет выполнятся но исходника не видно будет

>>Ну так то что придёт от AJAX и будет содержать JS который не желателен к показу


AJAX это джаваскрипт + php. я так понимаю, чтобы что-то пришло нужно что-то послать => указать адрес, а зная адрес можно с него скачать скрипт.

----

<div id="divl"> 
//то, что мы хотим скрыть 
</div> 


естественно работать не будет.

   
 
 автор: AlexSol   (30.08.2006 в 13:53)   письмо автору
 
   для: AlexSol   (30.08.2006 в 13:51)
 

мешанина.....

может кто даст рабочую ссылку на простой пример с AJAX - сразу ясно все будет.

   
 
 автор: CrazyAngel   (30.08.2006 в 14:00)   письмо автору
 
   для: AlexSol   (30.08.2006 в 13:53)
 

Очень не оптимизированный код...
Сама страничка

<?
header
("Content-type : text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HELLO AJAX</title>

<script language="javascript">
var req;

function loadDoc(url) {
url = url +'?name=' + document.forms.frm.name.value;
    // для "родного" XMLHttpRequest
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);

    // для версии с ActiveX
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange() {
    // только пр состоянии "complete"

    if (req.readyState == 4) {
        // для статуса "OK"
        if (req.status == 200) {
            // здесь идут всякии штуки с полученным ответом

            document.getElementById('answer').innerHTML=req.responseText
        } else {
            alert("Не удалось получить данные =(\n" +
                req.statusText);
        }
    }
}
</script>
</head>

<body>
<table border="1">
<tr>
<td>
<form name=frm>
<input type=text name=name><br>
<input type=button value="Send" onclick="loadDoc('handler_hello.php')">
</td>
<td width="100" valign="top">
<div id="answer">Здесь Будет ответ =)</div>
</td>
</tr>
</table>

</body>
</html>


Обработчик(handler_hello.php)

<?
header
("Content-type : text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
echo 
"Привет,".$_GET['name'];
?>

   
 
 автор: AlexSol   (30.08.2006 в 14:07)   письмо автору
 
   для: CrazyAngel   (30.08.2006 в 14:00)
 

что я из этого увижу если сохраню себе такую страницу?

   
 
 автор: ExtraBrain   (30.08.2006 в 14:11)   письмо автору
 
   для: AlexSol   (30.08.2006 в 14:07)
 

http://www.extrabrain.kiev.ua/chessgame.php?rezhim=2&id=163&sid=1721893172

Короче, сходите сюда. Там вы попадёте в чат. В чате время сообщения и некоторые сообщения выделены синим цветом. Попробуйте отыскать в исходнике каким способом осуществляется изменение цвета. Если найдёте представьте этот кусочек кода сюда.

   
 
 автор: AlexSol   (30.08.2006 в 14:17)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 14:11)
 

http://www.extrabrain.kiev.ua/extrachat.php?id_igrok=163&sid_igrok=1721893172
угадал???? только честно!

   
 
 автор: ExtraBrain   (30.08.2006 в 14:22)   письмо автору
 
   для: AlexSol   (30.08.2006 в 14:17)
 

Нет, это обвязка Аяксовская, а содержимого самого чата вместе с тегами расскраски там нет. Вот пусть умные хацкеры и поищут, если они такие умные :-)

   
 
 автор: ExtraBrain   (30.08.2006 в 14:35)   письмо автору
 
   для: AlexSol   (30.08.2006 в 14:17)
 

<div id="textchat" style="BACKGROUND-COLOR:#E0E0D6"><center><b style="color:#C00">Загрузка чата</b></center></div>

Пока чат загружается мы видим вот это. После загрузки оно заменяется на содержимое чата которого в исходниках как раз и не видно. В исходниках по прежнему видать
<div id="textchat" style="BACKGROUND-COLOR:#E0E0D6"><center><b style="color:#C00">Загрузка чата</b></center></div>

   
 
 автор: AlexSol   (30.08.2006 в 14:45)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 14:35)
 

верю. глубоко лезть не стал - искать дырки не моя работа.
но солидарен с автор: coloboc66 (30.08.2006 в 14:27)

   
 
 автор: CrazyAngel   (30.08.2006 в 14:59)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 14:11)
 

/extrachat.php ну сюда вроде запрос... дальше ищем все GET параметры, все которые беруться и все... только долго и муторно

   
 
 автор: ExtraBrain   (30.08.2006 в 15:13)   письмо автору
 
   для: CrazyAngel   (30.08.2006 в 14:59)
 

При чём тут параметры? Весь вопрос состоит в том легко ли юзверю посмотреть содержимое obj.innerHTML? Если сможет то увидит что там , если нет - то нет. Лично я не знаю как это сделать пользователю смотрящему чужую страницу в которой этот самый obj.innerHTML был перезагружен Аяксом.

   
 
 автор: AlexSol   (30.08.2006 в 15:18)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 15:13)
 

во какая мысль в голову пришла: вы скрываете данные из б.д. , но непосредственно код javascript виден.

вот если бы было так:
<html>
<div>
some_func()
</div>
</html>
а в результате виден чат, то это другое дело. речь ведь шла о зашите кода....

   
 
 автор: ExtraBrain   (30.08.2006 в 15:22)   письмо автору
 
   для: AlexSol   (30.08.2006 в 15:18)
 

Опять двадцать пять. Чат это только пример того что не видно данных. В чате это данные переписки из базы. Но если нужно было бы скрывать что-то, то можно было бы скрыть точно также и это что-то, в том числе и JavaScript. Просто те скрипты что нужно скрыть пишутся не в хедере, а впариваются аяксом прямо в див. Что ещё не понятно?


<script> 
function SuperSecret() { 
.... 

</script> 
<a href="#" onClick="SuperSecret()">Секрет</a>


Вот это всё можно запихнуть аяксом внутрь дива и оно будет работать, а видно его не будет.

   
 
 автор: RMW   (30.08.2006 в 18:01)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 14:11)
 

to ExtraBrain & all-all-all
Идём по вашей ссылке:
http://www.extrabrain.kiev.ua/chessgame.php?rezhim=2&id=163&sid=1721893172
В адресной строке браузера (IE) вводим:
javascript:alert(frames[0].document.getElementById('textchat').innerHTML)
и нажимаем Enter :))))

Не скажу, что это было просто,
часика полтора я про(мучал)ся ))),
но я и далеко не кулль хацкер.

   
 
 автор: ExtraBrain   (30.08.2006 в 18:08)   письмо автору
 
   для: RMW   (30.08.2006 в 18:01)
 

Ну чтож, молодец. Значит не катит сия фишка :-(

   
 
 автор: CrazyAngel   (30.08.2006 в 18:43)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 18:08)
 

вот вот, посто днем небыло времени, а ночью я бы сам искал это)

   
 
 автор: 12345   (30.08.2006 в 18:44)   письмо автору
 
   для: RMW   (30.08.2006 в 18:01)
 

RMW: метод правильный. А ещё можно взять Proxomitron или хотя бы GreenBrowser / MyIE / Maxthon , где есть внедрение скриптов, и выполнять скрипты внутри страницы.

Но интересно, что ещё никто не попытался запустить подгруженный в Аяксе скрипт и не убедился, что так он работать не будет :)) .

См. "AJAX и внедренные <script> ":

   
 
 автор: 12345   (30.08.2006 в 18:51)   письмо автору
 
   для: 12345   (30.08.2006 в 18:44)
 

ExtraBrain : Это занятие то же, что изобретение вечного двигателя, за той лишь разницей, что закон сохранения энергии - закон природы, в котором пытаются усомниться, а способ расшифровки скрипта все производители программных защит вкладывают в продукт, поэтому скрипт доступен по определению.

(Надёжнее часть алгоритма исполнять на сервере. Пока его не взломают.)

   
 
 автор: ExtraBrain   (30.08.2006 в 18:54)   письмо автору
 
   для: 12345   (30.08.2006 в 18:44)
 


<html> 
<head> 

<script type="text/javascript">
var  s="Function added !!! <scr"+"ipt defer> function s(){ alert('Ura !!!');}</scr"+"ipt>";

function ins_() {
   document.body.insertAdjacentHTML("beforeEnd",s); 

</script> 

</head> 
<body> 
<input type="button" onclick="ins_()" value="Add function s()"/><br/> 
<input type="button" onclick="s()" value="Test function s()"/><br/> 
</body> 
</html>


Не работает говорите. А как же это ? Или переменную s нельзя из Аякса загрузить?

   
 
 автор: 12345   (30.08.2006 в 18:59)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 18:54)
 

(В упор не вижу тут Аякса.) Почитайте ту тему, в общем. Решение, конечно есть. Данные загрузить можно в XML, выполнить - нет. Загружаем данные и выполняем их скриптом страницы.

   
 
 автор: ExtraBrain   (30.08.2006 в 14:00)   письмо автору
 
   для: AlexSol   (30.08.2006 в 13:53)
 


<html>

<head>
<title>test1</title>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'> 

<script>

 function Zagruzka() {
   obj=document.getElementById('div1');
   obj.innerHTML='<table border="1"><tr><td>1111</td><td>2222</td></tr></table>';
 }
</script>

</head>

<body onLoad="Zagruzka()">
<div id="div1">

</div>
</body>

</html>

На экране видим табличку а в исходниках

<div id="div1">

</div>


Вот так. Только то что запихивается в obj.innerHTML здесь пррописано явно, а нужно его через AJAX доставать с сервера.

   
 
 автор: AlexSol   (30.08.2006 в 14:05)   письмо автору
 
   для: ExtraBrain   (30.08.2006 в 14:00)
 

>нужно его через AJAX
как будет выглядить запрос? (в файле php) и будет ли пользователь видеть строку запроса в отдаваемом файле?

   
 
 автор: RadjaxteN   (30.08.2006 в 13:54)   письмо автору
 
   для: AlexSol   (30.08.2006 в 13:51)
 

Я понял что html тут роли не играет...ДА....

   
 
 автор: coloboc66   (30.08.2006 в 14:27)   письмо автору
 
   для: RadjaxteN   (30.08.2006 в 13:54)
 

Ну так то, что приходит с помощью аякса с сервера, все-равно предварительно обрабатывается серверным языком, а он и так скрыт. Короче- по определению клиентский код скрыть невозможно. Единственный путь максимально спрятать его от непродвинутых пользователей- закодировать с помощью упомянутых выше программ. Еще как-то с помощью iframe прячут, но опять же- достать код знающий человек сможет.

   
 
 автор: Владимир22   (30.08.2006 в 19:15)   письмо автору
 
   для: coloboc66   (30.08.2006 в 14:27)
 

Есть такой кодировщик кода, он кодирует так. Никто ничего не поймёт и ни у кого не возникнет желание возиться с раскодировкой.
<SCRIPT LANGUAGE=  "JavaScript">
<!--
function Decode(){var temp="",i,c=0,out="";var str="1061!1086!1088!1086!1096!1080!1081! 32!1089!1087!1086!1089!1086!1073!32 !1076!1083!1103!32!1089!1082!1088!1 099!1090!1080!1103!32!1082!1086!107 6!1072!";l=str.length;while(c<=str.length-1){while(str.charAt(c)!='!')temp=temp+str.charAt(c++);c++;out=out+String.fromCharCode(temp);temp="";}document.write(out);} Decode();
</SCRIPT>

   
 
 автор: 12345   (30.08.2006 в 20:00)   письмо автору
 
   для: Владимир22   (30.08.2006 в 19:15)
 

...А у кого возникнет, он добавит несколько символов: :)

<SCRIPT>
function Decode(){var temp="",i,c=0,out="";var str="1061!1086!1088!1086!1096!1080!1081! 32!1089!1087!1086!1089!1086!1073!32 !1076!1083!1103!32!1089!1082!1088!1 099!1090!1080!1103!32!1082!1086!107 6!1072!";l=str.length;while(c<=str.length-1){while(str.charAt(c)!='!')temp=temp+str.charAt(c++);c++;out=out+String.fromCharCode(temp);temp="";}document.write("<xmp>"+out);} Decode();
</SCRIPT>

   
 
 автор: RadjaxteN   (30.08.2006 в 21:12)   письмо автору
 
   для: 12345   (30.08.2006 в 20:00)
 

=)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования