quinta-feira, 26 de outubro de 2017

Publicado quinta-feira, outubro 26, 2017 por com 0 comentário

Bloqueando Injeção de código XSS

Para complementar o post Prevenção do SQL Injection hoje vou trazer um outro método de tratar a injeção SQL, e também já evitar o ataque XSS.



Segundo a definição mais espalhada na internet, o XSS é uma vulnerabilidade que permite ao atacante inserir códigos maliciosos nessas páginas, para que sejam executados no momento em que tais páginas forem acessadas. Geralmente esses códigos são em JavaScript, e muitas vezes usados para sequestro de sessão (Session Hijacking), incluir uma rotina JavaScript, PHP ou uma query SQL. Um tópico que vamos abordar em outro post.

Como se proteger?

Para se proteger é necessário você verificar e filtrar todas as entradas via $_GET e $_POST, a fim de eliminar qualquer injeção HTML, PHP ou SQL. Um meio para bloquear a injeção de códigos é através da função htmlspecialchars. Exemplo:

 <?php $pesquisa = htmlspecialchars($_GET['pesquisa']); ?>  

Além disso, para evitar invasões no banco de dados, recomendo realizar as consultas SQL com parâmetros filtrados:
$con  = new mysqli("localhost", "user", "pass", "test");
if (mysqli_connect_errno()) die(mysqli_connect_error());

$sql  = "INSERT INTO artigos (titulo, corpo, date) VALUES (?, ?, now())";
$stmt = $con->prepare($sql);
$ok   = $stmt->bind_param("ss", $_POST[title], $_POST[body]);

if ($ok && $stmt->execute())
  header('Location: index.php');
else
  die('Error: '.$con->error);
O erro mais comum na programação é passar os parâmetros diretamente na consulta, resultando em vulnerabilidades em todo o site:
$id  = $_GET['id'];
$sql = "SELECT * FROM TABELA WHERE ID=".$id; //ID ou uma consulta maliciosa

Com as consultas passando por parâmetros, além de eliminar invasões por Injection SQL, também evita XSS. Contudo, apenas a função htmlspecialchars não vai eliminar os ataques de XSS avançado. Para isso, é necessário usar uma classe Anti-XSS:


 <?php  
 class AntiXSS {  
   public static $err = "XSS Detected!";  
   /*  
    * @function  : setEncoding  
    * @return   : String  
    * @parameters : str: Content you want to change the character encoding  
    *        newEncoding: Character encoding you want set  
    * @description: Convert the character encoding of the string  
    *        to newEncoding from currentEncoding. currentEncoding  
    *        detecting by function so you only need give str and  
    *        newEncoding to the setEncoding function.  
    */  
   public static function setEncoding($str, $newEncoding) {  
     $encodingList = mb_list_encodings();  
     $currentEncoding = mb_detect_encoding($str, $encodingList);  
     $changeEncoding = mb_convert_encoding($str, $newEncoding, $currentEncoding);  
     return $changeEncoding;  
   }  
   /*  
    * @function  : blacklistFilter  
    * @return   : String  
    * @parameters : str: Content you want to filter with blacklist  
    * @description: Filter the content by blacklist method. Library use  
    *        RSnake's XSS attack vectors. To add new attack vectors  
    *        I'm continue to research.  
    */  
   public static function blacklistFilter($str) {  
     if (preg_match("/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t(.*)>(.*)/i", $str) > 0) {  
       return $str;  
     } else {  
       return self::$err;  
     }  
   }  
   /*  
    * @function  : whitelistFilter  
    * @return   : String  
    * @parameters : str: Content you want to filter with blacklist  
    *        whiteFilterPattern: Some patterns for filter the  
    *        data types.  
    * @description: Filter the content by whitelist method. To add  
    *        new data types, I'm continue to research.  
    */  
   public static function whitelistFilter($str, $whiteFilterPattern) {  
     switch ($whiteFilterPattern) {  
       case "string":  
         $pattern = "([a-zA-Z]+)";  
       break;  
       case "number":  
         $pattern = "([0-9]+)";  
       break;  
       case "everything":  
         $pattern = "(.*)";  
       break;  
       default:  
         $pattern = "([0-9a-zA-Z]+)";  
       break;  
     }  
     if(preg_match("/^$pattern $/i", $str) > 0) {  
       return $str;  
     } else {  
       return self::$err;  
     }  
   }  
   /*  
    * @function  : setFilter  
    * @return   : String  
    * @parameters : str: Content you want to filter with blacklist  
    *        filterMethod: Library have 3 method.  
    *         -Black Method  
    *         -White Method  
    *         -Gray Method  
    *        filterPattern: Some patterns for filter the  
    *        data types. (You can only use with whitelist filter)  
    *        noHTMLTag: Use PHP's strip_tags function to  
    *        remove HTML tags from content.  
    * @description: Filter the content by method.  
    */  
   public static function setFilter($str, $filterMethod, $filterPattern = NULL, $noHTMLTag = NULL) {  
     if (urldecode($str) > 0) {  
       $str = urldecode($str);  
     }  
     if ($noHTMLTag == 1) {  
       $str = strip_tags($str);  
     }  
     $str = strtolower($str);  
     $str = addslashes($str);  
   $str = htmlspecialchars(trim($str));  
     switch($filterMethod) {  
       case "black":  
         $str = self::blacklistFilter($str);  
       break;  
       case "white":  
         $str = self::whitelistFilter($str, $filterPattern);  
       break;  
       default:  
       break;  
     }  
     return $str;  
   }  
 }  
 ?>  

Fonte: Stackoverflow, Github
Ver mais
      edit

terça-feira, 24 de outubro de 2017

Publicado terça-feira, outubro 24, 2017 por com 0 comentário

ifconfig: command not found - Ubuntu, Debian e outros


As novas Distribuições Linux já estão vindo sem o pacote net-tools, que possui diversos comandos (ifconfig, arq, netstat, rarp, nameif, route, etc.). Caso você tente executar no terminal o comando ifconfig vai aparecer a mensagem “command not found”.

Caso você queira resolver o problema de forma rápida e simples, basta instalar o net-tools:
sudo apt-get update
sudo apt-get install net-tools
O pacote net-tools está obsoleto, por isso o as Distribuições Linux estão usando os comando do pacote iproute2, que é o padrão agora e possui as aplicações equivalentes ao net-tools.

Veja abaixo uma Lista de Correlações entre os comandos de ambos os pacotes:
1. Mostrar todas as interfaces de rede:
  • net-tools: ifconfig -a
  • iproute2: ip link show
2. Ativar/Desativar uma interface:
  • net-tools: ifconfig eth0 up ou ifconfig eth0 down
  • iproute2: ip link set up eth0 ou ip link set down eth0
3. Configurar IP e máscara em uma interface:
  • net-tools: ifconfig eth0 10.0.0.1/24
  • iproute2: ip addr add 10.0.0.1/24 dev eth0
4. Remover as configurações de IP e máscara de uma interface:
  • net-tools: ifconfig eth1 0
  • iproute2: ip addr del 10.0.0.1/24 dev eth1
5. Mostrar as informações de um interface específica: 
  • net-tools: ifconfig eth2
  • iproute2: ip addr show dev eth2
6. Modificar um endereço MAC:
  • net-tools: ifconfig eth0 hw ether 00:33:22:44:55:55
  • iproute2: ip link set dev eth0 address 00:33:22:44:55:55
7. Exibir as definições da tabela de roteamento:
  • net-tools: route -n ou netstat -rn
  • iproute2: ip route show
8. Adicionar um gateway (rota padrão):
  • net-tools: route add default gw 10.0.0.254
  • iproute2: ip route add default via 10.0.0.254
9. Adicionar um gateway estático:
  • net-tools: route add -net 192.168.0.0/24 gw eth1
  • iproute2: ip route add 192.168.0.0/24 dev eth1

Segue uma lista com os comandos antigos e os novos comandos contidos no pacote iproute2. Caso deseje ver outros comandos e a explicação de cada um, entre no link original aqui

Obsoleto
Sucessor
arp
ip n (ip neighbor)
ifconfig
ip a (ip addr), ip link, ip -s (ip -stats)
iptunnel
ip tunnel
route
ip r (ip route)e
nameif
ip link, ifrename
iwconfig
iw
netstat
ss, ip route (for netstat-r), ip -s link (for netstat -i), ip maddr (for netstat-g)
mii-tool
ethtool
Ver mais
      edit

sexta-feira, 6 de outubro de 2017

Publicado sexta-feira, outubro 06, 2017 por com 0 comentário

18 Sites com Cursos Grátis e com Certificados

Para quem deseja fazer cursos a distância, tem várias instituições que oferecem isso gratuitamente.


Abaixo está uma lista de 18 sites com cursos grátis.

1 – FGV Online
A Fundação Getulio Vargas foi a primeira instituição brasileira a ser membro do OEC – Open Education Consortium, um consórcio de instituições de ensino de diversos países que oferecem conteúdos e materiais didáticos sem custo, pela internet.

Membro desde julho de 2008, o FGV Online venceu, em 2011, a primeira edição do OCW People's Choice Awards – premiação para as melhores iniciativas dentro do consórcio –, na categoria de programas mais inovadores e de vanguarda.

2 – Fundação Bradesco
A Escol@ Virtual é um portal que oferece cursos a distância ou semi presenciais. São inúmeros cursos, indo dos cursos básicos até os mais avançados

3 – SESI
O portal do SESI Paraná disponibiliza 85 cursos online, totalmente gratuitos.

4 – SENAI
O SENAI oferece inúmeros cursos gratuitos a distância, como: Educação Ambiental, Empreendedorismo, Legislação Trabalhista, Segurança do Trabalho, Tecnologia da Informação e Comunicação, Propriedade Intelectual, Lógica de Programação, Consumo Consciente de Energia, Fundamentos de Logística, Desenho Arquitetônico, Finanças Pessoais, Noções Básicas de Mecânica Automotiva e Metrologia.

5 – SEBRAE
São mais de 30 cursos gratuitos voltado a negócios e empreendedorismo.

6 – CIEE
São mais de 35 cursos online grátis. Para acessar os cursos é preciso se cadastrar.

7 – Prime Cursos
Empresa especializada em ensino a distância. A escola se transformou rapidamente em uma referência no Mercado Virtual graças ao seu pioneirismo no desenvolvimento de cursos e-learning. Além disso, oferece muitos cursos em inúmeros tipos de áreas.

8 – Cursos Online SP
Oferece mais de 300 Cursos Livres de Qualificação Profissional Gratuitos e de alta qualidade.

9 – Veduca
Oferece vários cursos online com certificado. As cargas horários variam podendo chegar até 120 horas. O propósito é levar o ensino superior de alta qualidade a qualquer pessoa que se disponha a aprender.

10 - We Love Tech
Cursos Linux com certificados grátis. Ideais para quem deseja horas complementares.

11 – Learncafe
Inovador portal de ensino à distância, que visa conectar alunos e professores em um único ambiente de ensino.

12 – Senado Federal
Mais de 30 cursos gratuitos, online e com temas relativos ao Poder Legislativo, Orçamento, Administração Pública e Política. São certificados e abertos a toda população.

13 – Eduk.me
Aprenda a trabalhar com Marketing Digital desde os fundamentos. Veja como criar seu próprio site, blog ou loja virtual de forma simples e rápida. Descubra como promovê-los no Google, Facebook, Youtube, e-mail etc e como ganhar dinheiro com eles. Cursos com certificado!

14 – BMF&Bovespa
Site de capacitação, a formação e a especialização de profissionais do mercado financeiro que trabalham em corretoras, em bancos, fundos de
investimento e em empresas.

15 – Iped
A empresa tem a missão de promover a educação de maneira democrática levando ao mercado mais de 500 opções de cursos, em 30 áreas do conhecimento.

16 – Porto Gente
Ofertar cursos online voltados aos mercados de Logística, Transportes, Comércio e Turismo, viabilizando o aprendizado a qualquer momento e em qualquer lugar, contribuindo para um mundo mais ágil.

17 – Intel
Next Generation Center é um site onde você pode encontrar os cursos online grátis com certificado oferecidos pela Intel.

18 – Hospital Albert Einstein
São mais de 80 cursos online totalmente gratuitos oferecidos por uma dos melhores hospitais do país.


Caso algum desses links não esteja funcionando, deixe nos comentários que será corrigido o mais rápido possível. Bons estudos.


Ver mais
      edit