Нужно спрятать код

Discussion in 'PHP' started by stepashka_, 1 May 2011.

  1. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    Есть код:
    PHP:
    <frameset rows="*,0" framespacing="0" border="0" frameborder="NO"
    <
    frame src="site.com" scrolling="auto" noresize
    </
    frameset>
    Нужно что бы его нельзя было просмотреть через исходный код.
    Может можно как-то через отдельный файл вывести или ещё как нибудь? :confused:
     
  2. seofilms

    seofilms Banned

    Joined:
    27 May 2009
    Messages:
    66
    Likes Received:
    46
    Reputations:
    14
    Нельзя
    можно - <iframe> или include или js
     
    4 people like this.
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    stepashka_ чтобы вообще нельзя было посмотреть - его придется не писать. В исходном коде каком? Если браузера - то тут только создавать код динамически с использованием JS.

    Если в файлах сервера против админов - то действительно подгружайте его извне - для пхп include(), require(), echo file_get_contents(). Для хтмл - SSI.
     
    _________________________
    1 person likes this.
  4. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    Gifts, да в браузере. Можно пример как сделать с использованием JS ?
     
  5. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Opera Dragonfly покажет код подгруженный Аяксом.
     
  6. seofilms

    seofilms Banned

    Joined:
    27 May 2009
    Messages:
    66
    Likes Received:
    46
    Reputations:
    14
    Вот :

    <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>
     
    #6 seofilms, 1 May 2011
    Last edited: 1 May 2011
  7. ch4tr1x

    ch4tr1x New Member

    Joined:
    4 Mar 2011
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    это для хакеров-недоучек, раскрывается через alert или document.write(<textarea> cols=100 rows=20>");
     
  8. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Нельзя скрыть код, можно только усложнить работу взломщика, который будет его расшифровывать.
    А сайт, который открывается в фрейме легко узнать с помощью сниффера, так что его не скрыть. В этом поможет программа 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 
    chr1chr2chr3;
    var 
    enc1enc2enc3enc4;
    var 
    0;
    input input.replace(/[^A-Za-z0-9+/=]/g"");
    while (
    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 
    0;
    var 
    c1 c2 0;
    while ( 
    utftext.length ) {
    utftext.charCodeAt(i);
    if (
    128) {
    string += String.fromCharCode(c);
    i++;
    }
    else if((
    191) && (224)) {
    c2 utftext.charCodeAt(i+1);
    string += String.fromCharCode(((31) << 6) | (c2 63));
    += 2;
    }
    else {
    c2 utftext.charCodeAt(i+1);
    c3 utftext.charCodeAt(i+2);
    string += String.fromCharCode(((15) << 12) | ((c2 63) << 6) | (c3 63));
    += 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-байта.
     
    #8 randman, 1 May 2011
    Last edited: 2 May 2011
  9. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    ну...
    короче в Oперах некоторых есть бага. если выводишь нуллбайт, то код через браузер не посмотришь после него. вот пример.
    Как в пхп-файле:
    PHP:
    <html>
    ...
    </html><?php echo(chr(0)); ?><script src="..."></script>
    И как это покажет оперный просмотрщик кода:
    PHP:
    <html>
    ...
    </
    html>
    Едем дальше - видим мост. Код лучше всего прятать в куки. Что имеется ввиду - минимум вставки в хтмл (только лоадер кода из кук) - а в куках - код, который может что-либо делать, либо вообще подгружать сторонний js-файл.

    Легко обойти защиту? Ну не скажи. Во-первых код можно привязать к самому себе и после этого обфусцировать. Тем самым - если мы заменим document.write или eval на alert - код просто напросто не сработает. Также желательно привязывать в домену, это тоже не сложно. Крайне рекомендуется обход евал и других функций. Впринципе писал недавное такое, лоадер где то 250 символов, никаких евалов, код запускается из кук и привязан к домену и самому себе. Короче копай.
     
    1 person likes this.
  10. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    О каком взломщике идёт речь? о_О
     
  11. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Код, который необходимо спрятать, выносится в отдельный файл. Увидев сомнительный 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){
        // тут настоящий код функции
    }
     
  12. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    А еще как вариант глянь тему Грейта за 2006 год помоему.