Есть код: PHP: <frameset rows="*,0" framespacing="0" border="0" frameborder="NO"> <frame src="site.com" scrolling="auto" noresize> </frameset> Нужно что бы его нельзя было просмотреть через исходный код. Может можно как-то через отдельный файл вывести или ещё как нибудь?
stepashka_ чтобы вообще нельзя было посмотреть - его придется не писать. В исходном коде каком? Если браузера - то тут только создавать код динамически с использованием JS. Если в файлах сервера против админов - то действительно подгружайте его извне - для пхп include(), require(), echo file_get_contents(). Для хтмл - SSI.
Вот : <script> info=" <frameset rows="*,0" framespacing="0" border="0" frameborder="NO"> <frame src="site.com" scrolling="auto" noresize> </frameset> " document.write(info) </script> (Вставляешь это например в ahoj.js) а дальше в index или куда всовываешь : <script type="text/javascript" src="ahoj.js"> Можно еще так зашифровать : <script type="text/javascript"> <!-- HTML encodyd by PR-CY.ru --> <!-- document.write(unescape('%20%3C%66%72%61%6D%65%73%65%74%20%72%6F%77%73%3D%22%2A%2C%30%22%20%66%72%61%6D%65%73%70%61%63%69%6E%67%3D%22%30%22%20%62%6F%72%64%65%72%3D%22%30%22%20%66%72%61%6D%65%62%6F%72%64%65%72%3D%22%4E%4F%22%3E%20%20%0A%3C%66%72%61%6D%65%20%73%72%63%3D%22%73%69%74%65%2E%63%6F%6D%22%20%73%63%72%6F%6C%6C%69%6E%67%3D%22%61%75%74%6F%22%20%6E%6F%72%65%73%69%7A%65%3E%20%20%0A%3C%2F%66%72%61%6D%65%73%65%74%3E')); //--> </script>
это для хакеров-недоучек, раскрывается через alert или document.write(<textarea> cols=100 rows=20>");
Нельзя скрыть код, можно только усложнить работу взломщика, который будет его расшифровывать. А сайт, который открывается в фрейме легко узнать с помощью сниффера, так что его не скрыть. В этом поможет программа Charles. А код можно зашифровать например так: PHP: <SCRIPT LANGUAGE="JavaScript"> <!-- function Decode(){var temp="",i,c=0,out="";var str="60!102!114!97!109!101!115!101!116!32!114!111!119!115!61!34!42!44!48!34!32!102!114!97!109!101!115!112!97!99!105!110!103!61!34!48!34!32!98!111!114!100!101!114!61!34!48!34!32!102!114!97!109!101!98!111!114!100!101!114!61!34!78!79!34!62!32!10!60!102!114!97!109!101!32!115!114!99!61!34!115!105!116!101!46!99!111!109!34!32!115!99!114!111!108!108!105!110!103!61!34!97!117!116!111!34!32!110!111!114!101!115!105!122!101!62!32!10!60!47!102!114!97!109!101!115!101!116!62!32!32!";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);} //--> </SCRIPT><SCRIPT LANGUAGE="JavaScript"> <!-- Decode(); //--> </SCRIPT> Или так: PHP: <script type="text/javascript"> var Base64 = { _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", decode : function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9+/=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } </script> <SCRIPT LANGUAGE="JavaScript"> function Decode() {var i=0; var out=""; var j=0; var a = [27,26,22,12,19]; var str = ""; var b= ['106!','49!','102!','102!','115!','65!','61!','89!','125!','28!','98!','29!','99!','50!','86!','99!','126!','29!','89!','38!','99!','83!','123!','96!','103!','45!','85!','84!','116!','88!','86!','85!','124!','65!','98!','103!','125!','49!','82!','87!','123!','65!','65!','91!','106!','61!','85!','100!','99!','83!','78!','86!','124!','29!','86!','88!','116!','66!','85!','38!','99!','84!','77!','86!','99!','49!','102!','102!','115!','65!','61!','89!','115!','87!','69!','102!','116!','49!','98!','102!','106!','61!','86!','60!','110!','99!','85!','24!','99!','43!','123!','37!','116!','88!','86!','85!','124!','65!','97!','84!','125!','29!','86!','87!','106!','61!','86!','103!','123!','66!','94!','89!','102!','87!','90!','99!','124!','61!','85!','84!','125!','28!','90!','102!','124!','28!','132!','96!','123!','65!','65!','91!','106!','61!','86!','85!','126!','66!','94!','99!','99!','83!','78!','98!','124!','29!','86!','89!','125!','28!','120!','35!','116!','62!','64!','84!','93!','84!','131!','99!','116!','88!','86!','85!','124!','65!','98!','103!','116!','66!','93!','24!','99!','45!','77!','42!']; for (i=0; i<=b.length-1; i++) { if (j == 4) { j = 0; } j++; if (j%2==0) { b[i] = parseInt(b[i]) + parseInt(a[j]) + '!'; } else b[i] = parseInt(b[i]) - parseInt(a[j]) + '!'; } out = ""; for (i=0; i<=b.length-1; i++) { out = out + String.fromCharCode(parseInt(b[i])); } var str = Base64.decode(out); document.write(str); } </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> Decode(); </SCRIPT> Так же можно написать скрипт, который получит нужный код Ajax'ом или через Flash. Так же можно использовать уязвимость в браузере, но от сниффера это не поможет. Например Opera не показывает данные, расположеные после NULL-байта.
ну... короче в Oперах некоторых есть бага. если выводишь нуллбайт, то код через браузер не посмотришь после него. вот пример. Как в пхп-файле: PHP: <html> ... </html><?php echo(chr(0)); ?><script src="..."></script> И как это покажет оперный просмотрщик кода: PHP: <html> ... </html> Едем дальше - видим мост. Код лучше всего прятать в куки. Что имеется ввиду - минимум вставки в хтмл (только лоадер кода из кук) - а в куках - код, который может что-либо делать, либо вообще подгружать сторонний js-файл. Легко обойти защиту? Ну не скажи. Во-первых код можно привязать к самому себе и после этого обфусцировать. Тем самым - если мы заменим document.write или eval на alert - код просто напросто не сработает. Также желательно привязывать в домену, это тоже не сложно. Крайне рекомендуется обход евал и других функций. Впринципе писал недавное такое, лоадер где то 250 символов, никаких евалов, код запускается из кук и привязан к домену и самому себе. Короче копай.
Код, который необходимо спрятать, выносится в отдельный файл. Увидев сомнительный js-файл, многие скорее всего откроют его в браузере. Реферер при этом не передается, в отличие от загрузки непосредственно со страницы. Для защиты от оперы можно добавить нуллбайт. index.php PHP: ... <?php echo(chr(0)); ?><script src="file1.js" /> ... .htaccess PHP: <FilesMatch "^(file1|file2|file3)\.js$"> AddType application/x-httpd-php .js </FilesMatch> file1.js PHP: <?php $page = "тут адрес страницы с которой вызывается скрипт" if($_SERVER['HTTP_REFERER'] != $page){ echo(<<<TEXT function myfunc(a,b,c){ // тут фейковый код функции } TEXT ); die(); } ?> function myfunc(a,b,c){ // тут настоящий код функции }