Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Evitando XSS

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Evitando XSS

    Como muitos tutoriais só ensinam a atacar, resolvi fazer diferente para mudar a rotina, e ajudar programadores desinformados, que são explorado por scripts kiddies que ficam o dia inteiro na internet buscando formas de prejudicar o próximo, só para ganhar fama, e aparecer em jornais.

    Cross-site scripting (XSS) é um tipo de vulnerabilidade do sistema de segurança de um computador, encontrado normalmente em aplicações web que activam ataques maliciosos ao injectarem client-side script dentro das páginas web vistas por outros usuários. Um script de exploração de vulnerabilidade cross-site pode ser usado pelos atacantes para escapar aos controlos de acesso que usam a mesma política de origem.

    Muitos para evitar essa falha desabilitam o java script do navegador(client side), sendo que essa falha pode ser evitada com uma só função, onde o administrador de um site, injeta a faunção addslashes(), para escapar caracteres especiais em uma string.

    PS: além do addslashes existe uma função pronta no php.ini, chamada get_magic_quotes_gpc(), quando ativada ela executa o addslashes em todos os dados de GET,POST.
    Lembrando que quando o get_magic_quotes_gpc() estiver on, não precisa escapar as strings com o addslashes()!



    [ame]http://www.youtube.com/watch?v=f8_30DT0kV8[/ame]


    "Só Deus pode me julgar" 2Pac Eterno.


    Similar Threads

  • Font Size
    #2
    Nuss,cê teve coragem de postar,kkkkkkkk
    Os cara vão comer teu fígado.kkkkkkkkk

    Comment


    • Font Size
      #3
      Hi.

      A função addslashes() não protege contra XSS, e na verdade, não protege contra nada. =p

      []'s
      Desenvolvedor Perl, PHP, .NET (C#, VB.NET, ASP.NET), Java (J2EE), Shell Script, JavaScript/Ajax, C, amante de Linux e noob.

      twitter | last.fm

      Comment


      • Font Size
        #4
        Depende , para os lammer, ela protege sim!, agora se for um cara mais experiente consegui bula-lá, mais existe a função: mysql_real_escape_string().

        <?php
        $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
        if (!$link) {
        die('Could not connect: ' . mysql_error());
        }
        $item = "Zak's and Derick's Laptop";
        $escaped_item = mysql_real_escape_string($item, $link);
        printf("Escaped string: %s\n", $escaped_item);
        ?>


        "Só Deus pode me julgar" 2Pac Eterno.


        Comment


        • Font Size
          #5
          Hi.

          Quem é que faz proteção apenas para "os lammer"? E pra qualquer um que saiba mais, seu site fica vulnerável? As coisas não são bem assim no mercado de segurança. Proteção é proteção. Se não protege, não é proteção então não adianta nada.

          mysql_real_escape_string() é uma ótima pedida contra SQL Injection, não contra XSS. Mesmo por que XSS não acontece só no banco de dados.
          Por exemplo, imagina que temos uma galeria de imagem que mostra várias imagens em formato "/galeria.php?img=foto01":
          Código PHP:
          <?php
          echo '<img src="./imagens/'addslashes($_GET['id']),'.jpg">';
          ?>
          Se eu enviar a request, como o seu exemplo, realmente não funcionará:
          Código:
          Request:
          /galeria.php?img=<script>alert(6);</script>
          
          Response:
          <img src="./imagens/<script>alert(6);</script>.jpg">
          Mas pensa que o HTML não ignora as aspas que estão precedidas de barras. Se uma " vai ser transformada para \", o HTML tá pouco se fodendo. A aspa vai continuar valendo, e vai cair fora da tag normalmente.
          Código:
          Request: /galeria.php?img=%22%3E%3Cscript%3Ealert%286%29;%3C/script%3E
          
          Response: <img src="./imagens/\"><script>alert(6);</script>.jpg">
          Funciona. ;-)

          Addslashes no caso só dificultaria a chamada de métodos como gh("membro") e etc. Mas ainda poderíamos brincar com um eval...

          Código:
          Request: /galeria.php?img=]" onerror=alert(String.fromCharCode(102,118,0x6f,120,0x20,0157,0167,0x6e,0172,040,0165,114,040,0142,48,0170));//"
          
          Response: <img src="./imagens/]\" onerror=alert(String.fromCharCode(102,118,0x6f,120,0x20,0157,0167,0x6e,0172,040,0165,114,040,0142,48,0170));//\".jpg">
          Funciona normalmente. =p


          O método correto para proteção contra XSS é a função htmlentities(), utilizando o segundo parâmetro como ENT_QUOTES que também já faria o papel da addslashes:

          Código PHP:
          <?php
          echo '<img src="./imagens/'htmlentities($_GET['img'], ENT_QUOTES),'.jpg">';
          ?>
          Código:
          Request: /galeria.php?img="><script>alert(6);</script>
          
          Response: <img src="./imagens/&quot;&gt;&lt;script&gt;alert(6);&lt;/script&gt;.jpg">
          Já não funciona.

          Código:
          Request: /galeria.php?img=]" onerror=alert(String.fromCharCode(102,118,0x6f,120,0x20,0157,0167,0x6e,0172,040,0165,114,040,0142,48,0170));//"
          
          Response: <img src="./imagens/]&quot; onerror=alert(String.fromCharCode(102,118,0x6f,120,0x20,0157,0167,0x6e,0172,040,0165,114,040,0142,48,0170));//&quot;.jpg">

          E assim seria impossível burlar. ;-)

          []'s
          Desenvolvedor Perl, PHP, .NET (C#, VB.NET, ASP.NET), Java (J2EE), Shell Script, JavaScript/Ajax, C, amante de Linux e noob.

          twitter | last.fm

          Comment

          X
          Working...
          X