LUCIANO ARANGO: OK, pessoal. Meu nome é Luciano Arango. Eu sou um estudante de segundo ano em Adams House. E nós vamos estar falando sobre segurança web defesa ativa. Então, eu trabalho para o Gabinete de Informação Segurança na SEAS. E durante o verão, eu internado em SeguraTec, que era uma informação empresa de segurança que serviu para o Banco de Columbia. Isso é principalmente onde eu aprendi o que eu aprendi até agora. E assim algum do material que estamos vai passar por cima hoje, não temos realmente falado em sala de aula. Mas vamos em breve. Vai ser como SQL, JavaScript. E nós realmente não tenho ido sobre ele. Assim eu posso classificar de vôo por ele, e você pode não saber algumas coisas. Mas em breve, você vai aprender. E tudo isso vai fazer sentido. Também outra coisa - permanecer ético. Algumas das coisas que você aprende, você poderia usar de forma não-éticos. Se é seu, definitivamente tentar. Eu definitivamente motivar vocês para tentar seus próprios servidores, tente acontecendo dentro deles. Veja se você consegue penetrar neles, se você pode obter dentro deles. Mas não de qualquer outra pessoa. Policiais não gosto muito das piadas e o todo, vamos colocar isso aqui. Estávamos brincando. Eles ficam com muita raiva. Cabeça Assim, ao longo deste site. Eu tenho que abriu aqui. Este é um site, e tem um monte de exemplos. O que acontece é que o primeiro exemplo é uma espécie de vai ser muito mais fácil que o último exemplo, em um sentido que o primeiro exemplo é completamente inseguro. E a última é uma espécie do que um pessoa normal segurança web faria. Mas você ainda pode tipo de contornar isso. E vamos focar em uma e dois, um e dois exemplos. OK. Vamos começar com o cross-site scripting. O JavaScript é executado em navegador do cliente. É uma linguagem de programação que você usa para ser executado no navegador do cliente para você não tem que atualizar o site e voltar para o servidor. Você tem que correr. Por exemplo, o Facebook, você não tem para recarregar o site para novo status Atualizações para subir. Ele está usando JavaScript para gerar todas essas coisas. Assim, podemos injetar JavaScript malicioso para os sites. E assim, quando enviamos um link para alguém, poderíamos tipo de enviá-lo com parte do código que nós queremos. Há persistente e não persistente JavaScript - -cross site persistente e não persistente scripting, quero dizer. E a diferença é que persistente é JavaScript que será salvos no site. E não persistente será JavaScript que realmente vai acontecer apenas uma vez. Então, vamos olhar um exemplo rapidinho. OK. Então este site, simples, nada acontece aqui. E vamos tentar inserir algum JavaScript. Então, a nossa forma de começar a escrever JavaScript é que começamos com o script começando. E nós fechá-lo com script. Estamos indo simplesmente para colocar uma mensagem - Eu vou te mostrar - alerta. Alerta é uma função que o JavaScript utiliza para apresentar algo. Então, vamos tentar isso bem rápido. Eu estou indo para ir, Olá alerta. Bem, eu esqueci de colocar - OK. Então, isso é simples. Colocamos JavaScript em um site, e ele veio. E isso meio que só acontece em nosso site, certo? Então, parece que não é um problema, certo? Quero dizer, como você poderia usar esta maliciosa? Assim, a maneira que os hackers fazem este é realmente simples. Eles vão agarrá-lo. Eles podem enviar este link para você. Se eu vou enviar este link para você agora, e você abri-lo, ele vai dizer, Olá, dizendo que meu site está dizendo Olá. E por isso, se eu fosse dizer algo um pouco mais inteligente, se eu puxar uma JavaScript função eu meio de já escreveu - mas se você olhar para ele, eu vou sobre ele antes que eu escrevi. Então, nós estamos indo para definir um tempo limite. Vamos esperar por um par de segundos. Na verdade, vamos esperar, se Eu não me engano, cinco segundos. Isso vale em milissegundos. E então o que vamos fazer é que estamos vai alertar que o logon expirou a sessão para trás dentro E nós estamos indo para alterar o local para um local diferente. Então, se eu enviar este site a alguém, eles vão ser navegando por aí, calma. Nada está acontecendo. E em cinco segundos, ele vai quer dizer, o seu login expirou. Por favor, ligar para trás dentro Uma vez que clicar em OK, eu vou levá-los para outro site. Presumivelmente, o site vai ser semelhante ao site que em que estavam antes. E eles vão para registrar sua credenciais para o meu site, em vez de seu site. E para que eu possa enviar pessoas uma enviar e-mail com este link. Eu digo, oh, aqui está um link. Este é um banco, por exemplo. Eu digo, aqui, vá neste link. E uma vez que enviá-lo, eles são vai estar navegando por aí. Eu posso esperar por 15 segundos, 20 segundos e em seguida, pop que por favor faça login novamente assinar novamente. Vocês podem experimentá-lo com muito mais coisas. É complicado porque vocês não vi JavaScript, então você pode não sei algumas funções. Mas tudo que você tem a fazer é começar com script, acabar com script. E você pode colocar qualquer coisa no meio. Alerta é uma função, aguarde. Localização Janela leva você para uma nova localização. Mas você pode fazer muito mais. E assim, a idéia é que que tirar isso. Se eu for a exemplo dois, e eu colocado neste mesmo código, é Não vai funcionar. Então está imprimindo tudo fora por causa o que este site originalmente faz é se eu colocar qualquer coisa aqui, ele vai imprimi-lo aqui. Portanto, não é a impressão de nada. Este exemplo é, na verdade, a verificação para ver se o roteiro está lá. Então, sim, vá em frente. Pergunte-me. AUDIÊNCIA: não está enviando uma solicitação GET ou POST? LUCIANO ARANGO: Yeah. eles são envio de uma solicitação get. AUDIÊNCIA: É? LUCIANO ARANGO: Yeah. Também navegadores usam solicitações POST. Mas eu estou tentando mostrar solicitações GET para que possamos ver o que está realmente acontecendo. E assim, se olharmos para o código - por isso ele não está funcionando mais. E se dermos uma olhada neste código, que vai ser no exemplo dois. O que esta pessoa está fazendo, a pessoa responsável por este browser - abrir-se, OK - está substituindo o script palavra. Este é PHP, o que vocês poderiam vi um pouco ainda. Ele está apenas substituindo o script de palavra com o nome. Então, no entanto, se eu ir em frente e basta colocar em - se eu pegar o meu código de novo, e eu vou modificá-lo um pouco. Em vez de script, eu vou mudar ele para o script com um capital R. E vamos ver se esse código funciona. Então não imprimi-lo, que é um bom sinal. E espero que em mais de dois segundos, ele vai aparecer. Seu login expirou. OK. Está tudo bem. Assim, a verificação de roteiro pode não necessariamente trabalhar. A pessoa - ele também pode buscar por letras maiúsculas script, minúsculas script, caso str comparar, verifique se eles são os mesmos. Mas o hacker ainda pode fazer uma espécie do que fizemos em Vigenere quando nos mudamos personagens de volta um casal, avançar. E pode descobrir como colocar roteiro voltar lá para que ele possa injetar que script. Então, o que você quer usar é a htmlspecialchars proteger o seu website. E o que isto significa é que faz Certifique-se de que o que você colocar na - por exemplo, citações ou este superior ou inferior a - é substituído com algo que não será - deixe-me aproximar por aqui - o comercial real. Ele irá substituir aqueles HTML especial personagens que veremos quando estivermos falando - oh, isso vai me levar de volta para - esses personagens aqui mesmo. Estes significam que algo está chegando. Para HTML, que suporte a começar nos diz que algo HTML relacionado está chegando. E nós queremos nos livrar disso. Nós não queremos colocar HTML em um website.k Nós não queremos que o usuário seja capaz de colocar algo em seu site que podem afectar o seu site, como script ou HTML ou algo parecido. O que é importante é que você higienizar a entrada do usuário. Assim, os usuários podem entrada de muitas coisas. Ele pode introduzir um monte de coisas para tentar para enganar o navegador em ainda executar este código de script. O que você quer fazer é não apenas olhar para script, mas olhar para tudo que poderiam ser mal-intencionado. E htmlspecialchars vai fazer isso para você, então você não tem se preocupar com isso. Mas não tente fazer por si mesmo tipo de com seu próprio código. Está todo mundo claro sobre XSS? OK. Vamos para a injeção de SQL. Assim, a injeção de SQL é provavelmente a número um vulnerabilidade em diferentes websites. Quer dizer, um bom exemplo - Eu estava pesquisando mais distante por isso. E eu encontrei este artigo incrível, onde Vi que Harvard foi violado, foi cortado. E eu estava pensando, bem, como eles fariam isso? Harvard é a mais impressionante, a maioria garantir universidade nunca. Certo? Bem, para violar os servidores, os hackers usaram uma técnica chamada injeção de SQL. Então, isso acontece no dia-a-dia. As pessoas se esquecem de ter em conta para injeção de SQL. Harvard faz. Eu acho que ele diz aqui, Princeton, Stanford, Cornell. Assim como nós - então o que é esse SQL injeção que está trazendo tudo isso pessoas para baixo? OK. Então SQL é uma linguagem de programação que que usamos para acessar bancos de dados. O que nós fazemos é selecionar - então o que esta lê agora é selecionar tudo a partir da tabela. SQL, ele muda para esses bancos de dados que têm mesas cheias de informações. Então, escolha de tudo, desde os usuários onde o nome é nome de usuário. Certo? Bastante simples. A ideia de injeção de SQL é que nós inserir algum código malicioso que faria enganar o servidor para executar algo diferente do que o que originalmente estava correndo. Então, digamos que o nome de usuário, que colocamos em 1 ou igual a 1. Então nós colocamos em uma ou igual a 1. A forma como ele vai ler agora vai ser selecionar dos usuários, tudo de usuários - isso é tudo - onde nome é nome de utilizador, mas nome de usuário é ou 1 é igual a 1. Assim, o nome não é nada ou 1 é igual a 1. 1 é igual a 1 sempre é verdade. Então, isso vai sempre retornar informações dos usuários. OK. Nós não precisamos de ter a nome de usuário correto. Nós podemos apenas ter qualquer coisa que nós queremos, e ele irá retornar informações que precisamos. Vejamos outro exemplo. Se temos tudo, desde a escolha do usuário, onde nome é usuários DROP TABLE - então o que você acha que isso vai fazer se eu colocar o nome de usuário como usuários DROP TABLE? Alguém tem uma idéia? Sim. AUDIÊNCIA: Vai dizer ele para despejar todas as tabelas. LUCIANO ARANGO: Vai dizer-nos para despejar tudo no site, tudo no banco de dados. E o que as pessoas usam isso para - assim Eu vou mostrar para vocês. Eu desativei soltando as tabelas porque eu não quero que você caras para largar minhas tabelas. Vamos dar uma olhada nisso. Portanto, este puxa simplesmente as informações para uma determinada pessoa. Então, como vamos saber se isso é afetados por injeção de SQL. Vamos verificar rapidinho se é que podemos colocar algo - deixe-me copiar este código. Eu vou passar por isso em um segundo. Eu vou colocar raiz e 1 é igual a 1. Este aqui, este por cento sinal de 23 - o que ele realmente é, se eu olhar aqui na - a forma como HTML leva em números, se você dar uma olhada quando eu coloco em um espaço aqui - se eu fosse para o espaço algo aqui, ela altera-lo para um por cento 2. Vocês veja isso aqui quando eu coloco em um espaço? O modo como funciona é que você só pode enviar valores ASCII através de HTML. Assim, substitui, por exemplo, um espaço com 20 por cento. Eu não sei se vocês já vi isso antes. Ele substitui uma hashtag com cento 23. Nós precisa uma hashtag no final ou declaração, para que possamos dizer a banco de dados para se esqueça de comentar este último ponto e vírgula no final. Queremos que ele não pensar sobre isso. Nós só queremos que ele seja executado tudo que temos de antemão e comentar isso. Vamos dar uma olhada nisso. Então, se eu fosse colocar alguma coisa errada - vamos dizer, por exemplo, eu coloquei dois iguais 1, ele não me dá nada. Quando eu coloquei em 1 é igual a 1, e ele faz retornar algo, isso me diz que este é vulnerável a uma injeção SQL. Agora eu sei que o que quer Coloquei depois desta - e, por exemplo, descartar tabelas ou algo parecido vai certamente funcionar. Eu sei que é vulnerável a injeção de SQL porque eu sei que debaixo do capô, está deixando me fazer o 1 é igual a 1 coisa. OK? E se olharmos para essas outras, número dois e número três, é vai fazer um pouco mais de verificação por baixo da capô do que se trata. Assim, qualquer pessoa permitir a queda ainda nada nem tentou? Vocês espécie de obter SQL ainda? Porque eu sei que vocês não tem viu ainda, então é meio de confuso para vocês. Vamos dar uma olhada. Então, qual é o caminho para evitar SQLI? OK. Então, isso é muito importante porque você caras definitivamente querer evitar isso em seus sites. Se não, todos os seus amigos estão indo para tirar sarro de você quando cair tudo suas tabelas. Assim, a idéia é que você reparar o SQL de certa forma, enquanto você combinar que as entradas do usuário com uma determinada string. Assim, a maneira como isso funciona é você preparar a base de dados. Você seleciona o nome, cor e calorias a partir de uma base de dados chamada fruta. E então onde está a menos de calorias, e vamos colocar um ponto de interrogação lá dizendo que nós estamos indo para a entrada algo em um segundo. E a cor é igual, e nós colocamos uma pergunta marca dizendo que vamos entrada algo em um segundo bem. OK? E, então, executá-lo, colocando em 150 e vermelho. E isso vai verifique Certifique-se que estes dois - essa matriz irá verificar que estes dois são um inteiro e que este é um string. Então nós vamos, e vamos buscar tudo, vamos colocá-la em vermelho. Isso significa que buscar todos. Isso significa que realmente executar o SQL declaração e colocá-lo novamente em vermelho. Aqui vamos fazer o mesmo, mas nós fazer o mesmo para amarelo. E nós buscar todos. E, desta forma, podemos evitar que o usuário de ser capaz de introduzir algo que não é o que nós especificado, uma string ou um número inteiro, por exemplo. Eu estava falando anteriormente sobre depender de outros. Quando vocês iniciar seu projeto, você está mais definitivamente vai usar inicialização ou algo similar. Vocês já usado Wordpress? Provavelmente vocês têm usado Wordpress mais provável. Assim, o problema com o uso coisas de outras pessoas - Eu só vou ao Google bem rápido Vulnerabilidade Wordpress. Se eu conseguir isso até agora - Eu literalmente fez um dois segundo Google. Podemos ver que o WordPress - este é datado em setembro '12. 26 é atualizado. A configuração padrão do Wordpress antes de 3.6 não impede que estes certos envios, o que pode tornar mais fácil para ataques cross-site scripting. Assim, uma história rápida, uma vez que estávamos trabalhando com - assim que eu era, no verão, trabalhando um estágio. E nós estávamos trabalhando com uma espécie de como uma grande empresa de cartão de crédito. E eles contam com algo chamado - Eu não sei se vocês já jogou com um produto chamado Joomla. Joomla é um produto que é usado para controle - uma espécie de similar ao Wordpress, usado para construir websites. Então eles tiveram seu site trabalhando em Joomla. Isto é, na verdade, um cartão de crédito empresa na Colômbia. Vou levá-lo ao seu site rapidinho. Então, eles usaram o Joomla. E eles não tinham actualizado Joomla para a mais recente adição. E assim, quando estávamos dando uma olhada em seu código, fomos capazes de realmente ir dentro de seu código e roubar todo o informações de cartão de crédito que eles tinham, todos os números de cartão de crédito, os nomes, os endereços. E este foi apenas - e seu código foi perfeitamente bem. Eles tinham grande código. Era toda a segurança. Eles checaram todos os bancos de dados. Eles fizeram-se cross-site scripting estava bem. Mas eles usaram algo que não era atualizado, que não era seguro. E assim que os levou a - então vocês está indo definitivamente para usar outro código, frameworks de outras pessoas do povo para construir o seu site. Certifique-se de que eles são seguros, pois às vezes não é você, o que comete um erro. Mas alguém comete um erro, e então você cair por causa disso. Senhas e PII. Assim senhas. OK. Vamos dar uma olhada em senhas rapidinho. OK. Por favor me diga que todos usa seguro - Espero que todos aqui usa senhas seguras. Estou apenas deixando que como uma suposição. Então vocês estão indo definitivamente para armazenar senhas para seus sites. Você vai fazer algo parecido um login ou algo assim. O que é importante é não guardar senhas em texto simples. Isto é extremamente importante. Você não quer para armazenar uma senha em texto simples. E você definitivamente não quer realmente para armazená-lo em um hash de uma maneira. Então, o que um hash é uma maneira que, quando você gerar uma palavra, quando você coloca este palavra em uma função hash, será gerar para trás algum tipo de críptica mensagem ou conjunto enigmática das chaves. Vou mostrar-lhe um exemplo. Vou botar eles password1 palavra. Hash md5 Então vai me retornar algum tipo de informação estranha. O problema é que as pessoas lá fora que gostaria de entrar em sites têm já descobriu tipo de todos os hashes MD5. O que eles fizeram é eles se sentaram em seu computadores, e eles hash cada única palavra possível lá fora, até eles tem uma espécie de o que é isso. Se eu fosse olhar isso - Eu apenas peguei esse hash. Se eu conseguir esse hash - se eu entrar em um site, e eu acho esse hash, porque eu chegar ao bancos de dados, e eu procurá-lo, alguém já percebi isso por mim. É. Então, as pessoas sentaram-se, e tudo o md5 hash que você colocar, eles vão retornar para você algo que é uma palavra. Se eu botar outra palavra, como - Eu não sei - trees2. Eu não quero ficar desapontado pelas minhas pesquisas do Google. Lá está, trees2. Então, um monte de sites ainda usam hash MD5. Eles dizem que, oh, é seguro. Nós não estamos armazenando em texto simples. Temos este hash MD5. E tudo o que tenho a fazer é apenas Google o número. Eu nem sequer tenho que me computar. Eu só posso pesquisar no Google, e alguém já fez isso por mim. Aqui está um monte deles. Aqui é um monte de senhas. Então, definitivamente não use hash MD5, porque tudo que você precisa fazer é o Google. Então o que você deseja usar no lugar? OK. Algo chamado de salga. Então, o que salga é - Vocês se lembram quando éramos falando de forma aleatória em - Eu não tenho certeza do que PSET que era - foi ele PSET lá ou quatro? Nós estávamos falando sobre encontrar a agulha no palheiro. E no pset, ele disse que você poderia realmente descobrir o que aleatório gera, porque alguém já passou aleatórios um milhão de vezes e apenas tipo de formado o que eles geram. O que você quer fazer é colocar em uma entrada. Então é isso que tipo de salga é. Eles já descobri o que salga retorna para cada trabalho. Então, o que faz é salga você colocar em um sal. Você coloca em uma determinada palavra. E vai botar essa palavra, dependendo sobre o que você colocar aqui. Então, se eu botar uma senha com este sentença, ele vai botar diferente se eu botar password1 com uma frase diferente. É uma espécie de dá-lo de um lugar para começar para o hashing para começar. Por isso, é muito mais difícil de calcular, mas você ainda pode calculá-lo, especialmente se você usar um mau sal. Pessoas já também descobriu sais comuns e descobriu o que isso é. Sais aleatórias são muito melhor, mas a melhor maneira é usar uma coisa chamada cripta. E o que cripta permite que - de modo que essas funções são já construído para você. Muitas pessoas esquecem que, ou esquecem-se de usá-lo. Mas se eu olhar para cima cripta PHP, cripta já retorna uma cadeia de hash para mim. E ele realmente salga muitas vezes e hashes-lo muitas vezes. Então, nós não temos que fazer isso. Então tudo que você tem a fazer é enviá-lo em cripta. E isso vai criar uma grande de hash sem você ter que se preocupar com sal ou qualquer coisa. Porque se você fosse sal, você tem para lembrar o que você usou sal porque se não, você não pode obter o seu senha para trás sem a sal que você usou. OK. E também pessoais identificáveis informações. Então, segurança social, a um cartão de crédito - isso é bastante óbvio. Mas às vezes as pessoas esquecem a forma como ele obras é, a quantidade de informação que você realmente precisa encontrar alguma pessoa? Alguém fez um estudo sobre este um caminho de volta. E foi assim, se você tiver um nome completo, você não consegue encontrar alguém que facilmente. Mas e se você tem um nome completo e sua data de nascimento? Isso é suficiente para identificar alguém especificamente? E se você tem o seu nome eo endereço de rua que vive? Isso é o suficiente para encontrar alguém? E isso é quando eles questionam, o que é informações de identificação pessoal, e o que você deve se preocupar com não doar? Se você doar pessoais identificáveis informação de que alguém lhe dá, você poderia ser processado. E nós definitivamente não queremos isso. Então, quando você está colocando o seu site para fora, e você tem uma muito legal design, espero que você fez um projeto final incrível. Qualquer tipo de você querer colocá-lo lá fora. Você quer ter certeza de que tudo o que você está tirando do usuário, se é informações de identificação pessoal, quer ter certeza de que você está sendo realmente cuidado com ele. Injeção Shell. OK. Injeção Shell permite que o invasor obter acesso à sua linha de comando real em seu servidor. E assim ele é capaz de executar código que você não pode controlar. Vamos dar um exemplo dessa bela seqüência aqui. Se formos para o site novamente, eu sou indo para ir para a injeção de código. Então, o que isso faz é - é também o que estávamos olhando antes. Estamos permitindo que o usuário colocar em qualquer ele quer, e ele vai imprimir o que quiser. Então eu vou colocar uma chamada. O que isto é - ele vai começar pela concatenação. Por isso me deixa executar qualquer comandar corrida da pessoa antes e meu comando. E eu estou executando um comando do sistema. E estes últimos cordas são - lembre-se o que eu falei com vocês sobre, ao passo que você tem que codificar lo em um método de URL. Se eu executar isso agora - Eu vou te mostrar por aqui - você vai ver que eu terminei se executar um comando. Este é realmente o servidor real que o meu site está sendo executado. Então, nós não queremos isso, porque eu posso correr - este servidor não é meu. Então eu não quero estragar a sua irmã, servidor de Marcus. Mas você pode executar mais comandos que são perigosos. E potencialmente, você pode apagar arquivos, remover diretórios. Eu posso remover um determinado diretório se Eu queria, mas eu não quero fazer isso com Marcus. Ele é um cara legal. Ele me emprestou o seu servidor. Então eu vou deixá-lo fora na boa. Então, o que nós não queremos usar - não fazer quer usar eval ou sistema. Eval ou sistema permite fazer essas chamadas do sistema. Meios Eval avaliar. Sistema significa que eu corri. É executar algo no sistema. Mas podemos proibir essas coisas em PHP para que não usá-los. E fazer o upload de arquivos. Eu ia fazer uma incrível coisa com o upload de arquivos. Mas, como eu disse a vocês, o meu arquivo coisa de upload não está funcionando. Se eu fosse fazer o upload de um arquivo de agora - se eu fosse fazer o upload de um arquivo, e é uma imagem - você tem uma coisa de upload que é uma imagem. Isso é bom. Nada acontece. Mas se você tem um arquivo de upload, para exemplo, e que o usuário realmente envios um arquivo PHP ou um arquivo exe ou algo assim, então você poderia potencialmente temos um problema. Este estava trabalhando antes. Infelizmente para mim, é não funciona mais. Se eu, por exemplo, carregar este arquivo, eu sou não obtendo permissão para carregar o arquivo devido ao servidor não sendo a minha. Então, o cara é muito inteligente. Então, nós não queremos - Eu vou mostrar para vocês - OK, estas são algumas ferramentas muito legais. Então, essas - entrar - se vocês tem Firefox - espero que você faz. Há dois add-ons chamados SQL Inject Eu e Cross-Site Script mim. Abrem-se tão pouco de lado bares ao lado. E se eu fosse para ir para CS60, por exemplo - então o que ele faz é que parece para todas as formas que - espero, eu não vou ficar em apuros por isso. Mas OK. Aqui está o sistema de pinos. Então, quando eu começar a procurar furos no o sistema, a primeira coisa que faço é abrir esta pequena bela ferramenta no lado. E eu vou testar formas com ataques de automóveis. E então o que isto significa é que vai lentamente abrir um monte de navegadores. Aqui é um monte de navegadores. E ele está tentando cada combinação única de cross-site scripting que possivelmente seja, se você vê ao lado. E vai me dar um resultado tipo de qual é a resposta. Todos os passar. Obviamente, todos eles passam. Quero dizer, eles são muito inteligentes pessoas lá em cima. Mas se eu fosse a correr - Eu tive momentos antes, quando eu executar este em projetos finais dos alunos. Eu simplesmente executar SQL Inject Me com todos os ataques diferentes. E ele está tentando injetar SQL este servidor pino. Então, se nós rolar para baixo, para exemplo, ele diz - isso é bom, se ele retorna. Por isso, testou alguns determinados valores. E o servidor retornou um código que foi negativo. Remover temporariamente. Isso é bom. Tenta todos esses testes. Então, você poderia simplesmente executar - Eu gostaria de poder encontrar um site real rápido, que me deixou - talvez a loja CS50. Uau, isso vai tomar um caminho muito longo. Vou deixar o primeiro teste não terminar bem. Por isso, está reclamando. Então, essas são as três coisas. Estas ferramentas são gratuitas. Você pode baixá-los e executá-los em seu site, e ele vai dizer-lhe se você tem cross-site scripting, se você tem SQL, se você tiver algo parecido. Eu sou uma espécie de bagunçar. O que é importante - OK, por isso nunca confiar no usuário. Quaisquer que sejam as entradas do usuário para você, fazer certeza de que higienizar-lo, limpá-lo, você verificar as coisas certas, que está dando o que você quero que ele para lhe dar. Esteja sempre atualizado sobre o que os quadros que na verdade você está usando. Se você usar algo como inicialização - Eu sei que vocês vão usar inicializar porque ele está indo para ir sobre isso em breve na classe - e Wordpress ou algo parecido, normalmente isso pode ser cortado. E então você não precisa nem saber. Você está apenas executando o seu site. E é totalmente seguro. E você vai para baixo. Então, eu estou pescando muito cedo. Mas eu quero agradecer Pentest Labs. Eu vou mostrar para vocês algo chamado Pentest Labs. Se vocês estão realmente interessados ​​em que a segurança realmente é, há uma site chamado Pentest Labs se vocês vão para isso agora. Oh, bem, não é isso. Eu só vou para executá-lo assim. Google diz-me a resposta. OK. E ensina usá-lo - por isso diz, aprender a penetração da web testar o caminho certo. Ela ensina-lhe - espera-se, você é uma pessoa ética. Mas ele ensina como você pode olhar para como você pode começar dentro de sites. E se você aprender como você pode entrar sites, você pode aprender a proteger-se de ficar sites dentro. Deixe-me aproximar porque talvez vocês não estão olhando para esse direito. Da injeção de SQL que desembolsar, de modo tipo de como eu posso começar a partir de SQL injeção de desembolsar. E você descarregue esta máquina virtual. E a máquina virtual já vem com o site que você está indo para experimentá-lo. Você faz o download deste PDF. E ele vai mostrar linha por linha o que você tem que fazer, o que você verifique. Isto é o que um atacante realmente faz para começar dentro de um site. E algumas dessas coisas é complicado. Eu gostaria de poder passar por cima de mais coisas com vocês. Mas eu me preocupo que vocês não tem realmente - isso é o que eu fui com vocês, testes web para testes de penetração. Realmente não sei o que SQL é eo que - Seminário de Carl Jackson é incrível também. Vocês não sabem espécie de que é isso. Mas se você vai para o site, e você baixar estes tutoriais e estes PDFs, você pode dar uma olhada no tipo de que a área de segurança realmente em testes de penetração, veja como você pode obter sites dentro e proteger se a partir dele. Então se eu fizer uma visão super-rápida, ele vai ser evitar cross-site scripting. Você quer usar htmlspecialchars cada cronometrar o usuário insere algo. Evitar injeção de SQL. Se você fizer isso, você já está melhor do que Harvard era quando eles se rompido. E certifique-se de suas senhas não estão em texto simples. Certifique-se de que você faz não só uma forma de hash eles, mas que você use cripta, o PHP função que eu mostrei a vocês. Dessa forma, você deve ser bom. Além disso, se os seus amigos deixá-lo, execute SQL Inject Me em seus sites. Executar cross-site scripting em seus sites. E você vai ver um monte desses sites tem uma tonelada de vulnerabilidades. É incrível o quanto as pessoas esquecem para higienizar suas bases de dados ou para fazer certeza do que introduzir o da pessoa não é código de script. OK. Eu meio que terminou muito cedo. Mas, se alguém tem alguma dúvida sobre qualquer coisa, você pode atirar em mim uma pergunta. É. Vai, vai. AUDIÊNCIA: Eu só quero perguntar, você pode explicar como o arquivo enviar exatamente obras. LUCIANO ARANGO: Yeah. Então deixe-me mostrar-lhe o arquivo carregar rapidinho. Então o upload do arquivo - o problema sagacidade o upload do arquivo agora é que - Eu vou abrir o código para vocês ver o código por trás dos bastidores. E é carregar. Aqui está um código para o uploader de arquivos. Estamos tentando ir para este diretório aqui. E estamos tentando, assim que introduzir o arquivo, arquivo isset - por isso, quando há uma arquivo em arquivos, essa imagem, em seguida, tentamos movê-lo aqui. Nós pegar o arquivo aqui. O método é POST, tipo, imagem, arquivo. E estamos enviando este arquivo. E, em seguida, uma vez que temos isso, então quando arquivo tem uma imagem, estamos tentando enviá-lo para este diretório. O problema é que o site não é me deixando ir a este diretório, porque ele não quer que eu volte. Ele não quer que eu vá - Eu tenho que ir - por isso aqui está o upload. Aqui está imagens. Eu tenho que ir todo o caminho de volta para a começando e colocá-lo lá e, em seguida, ir e colocá-lo no diretório. Então, se eu estava correndo uma janela de terminal, e eu queria mover um arquivo - [Inaudível] pode vê-lo. Se eu quisesse mover um arquivo, eu tenho para colocar o nome do arquivo e, em seguida, o caminho completo Eu quero enviar. E, em seguida, o servidor não é me deixar voltar. E por isso não está deixando me chegar a esse arquivo. Mas normalmente - então não há um código para o upload de um arquivo. Então, normalmente o que vai acontecer é que o pessoa não está verificando se o meu arquivo termina com. jpeg, então eu gostaria de verificar. Deixe-me abrir um exemplo muito rápido. OK. Esta pessoa certa - assim exemplo dois está verificando se preg_match - aqui está mais aqui - para certificar-se de que termina com PHP, que é bom. Isso é bom. Mas há uma grande verdade problema com este. Isso é bom. Mas se eu fosse colocar um arquivo chamado myfavoritepicture.php.jpeg, eu poderia ainda potencialmente se livrar do jpeg e executar it.k que o PHP é perigoso. Você não quer que a pessoa seja capaz para executar código no seu site. Mas então. Jpeg deixa passar. A idéia é o que você realmente quer fazer não é ter arquivos, A. Mas, OK, o que você realmente quer fazer é se certificar de que você lê sobre o mundo inteiro. E não há nada. Php nele. Não há. Php no nome completo do arquivo. AUDIÊNCIA: Mas você poderia colocar. jpeg no final. Os servidores ainda executar o código. LUCIANO ARANGO: Não, ele não vai executado no início. Você tem que ir para trás e tentar para ver se você pode - AUDIÊNCIA: Então temos que - OK, apenas um outro conjunto que envolve - LUCIANO ARANGO: Yeah. AUDIÊNCIA: OK. LUCIANO ARANGO: Yeah. OK. Alguma outra pergunta? OK. Vou deixar isso e classificar de tentar ver se vocês podem - as outras são um pouco mais complicado, porque eles exigem muito mais conhecimento de SQL do que apenas o começando conhecimento de SQL é web e o que é JavaScript. Mas eu vou tentar continuar assim, e espero que vocês vão aprender sobre isso e tentar dar uma olhada no o que você pode fazer e quantos exemplos você pode passar. Alguém tem alguma outra perguntas sobre o assunto? Vá em frente. Sim, atirar, atirar. Sim, vá em frente. Vá em frente. AUDIÊNCIA: OK. Então eu ouvi sobre como Magic Quotes não são seguros o suficiente. LUCIANO ARANGO: O que - Magic Quotes? AUDIÊNCIA: Yeah. Por isso, acrescenta - por isso, sempre que você entrada alguma coisa, ele sempre acrescenta aspas. LUCIANO ARANGO: Yeah. É. OK. AUDIÊNCIA: E então eu pensei que trabalhou, mas então eu procurei-o. E ele disse que não é bom. Mas eu não sei por que. LUCIANO ARANGO: Yeah. AUDIÊNCIA: Não use Magic Quotes, porque não é seguro. LUCIANO ARANGO: OK. Cotações tão mágico é quando você insere SQL e já adiciona a cotação para você. AUDIÊNCIA: É sempre adiciona aspas em torno de tudo o que você colocar dentro LUCIANO ARANGO: Yeah. Assim, o problema com isto é que - Vou dar uma olhada - AUDIÊNCIA: Como se adquirem a instrução SQL? Ou eu acho que poderia ser como citação selecionar. LUCIANO ARANGO: Sim, o que você precisa boas cotações para o SQL. AUDIÊNCIA: Não, mas o servidor faz isso por você. LUCIANO ARANGO: Estas pequenas citações aqui, estas pequenas citações? AUDIÊNCIA: Yeah. LUCIANO ARANGO: Yeah. O problema é que você pode comente a última - OK, então o que posso fazer é que eu posso comentar fora - por isso vamos dar uma olhada - me deixar abrir um arquivo de edição de texto. Deixe-me apenas editar esta aqui diretamente. OK. Vocês podem ver isso claramente? O que posso fazer é que eu posso comentar fora o último. Isso vai comentar a última. E então eu vou colocar aqui, colocar todo o material malicioso aqui. Assim, o usuário é realmente introduzindo, certo? O usuário não está introduzindo as coisas, certo? Isto é o que eu estou indo para a entrada como a pessoa que tenta entrar. Vou colocar em - essa é uma aspa. É apenas rabiscada por engano. E então, o que o código vai fazer - desculpe, eu vou levar isso para fora. O que o código vai fazer é ele vai adicionar a primeira aspas aqui. E está indo para adicionar o último aspas também. E também vai adicionar o última, última aspa. Mas eu estou comentando estes cotação marca para fora, para que eles não são executados. E eu estou terminando esta citação marcar aqui. Você entendeu? Você está perdido? Eu posso comentar a última cotação marca, e cuidar da marca primeira citação. AUDIÊNCIA: E apenas acabamento o primeiro. LUCIANO ARANGO: Yeah. E apenas terminar o primeiro. Sim, isso é certo. Isso é o que eu posso fazer. É. Quaisquer outras perguntas como essa? Essa é uma ótima pergunta. Não, sim, talvez. Espero que vocês vão fazer uma espécie de mais sentido quando você estuda e SQL coisas assim. Mas certifique-se - manter essas ferramentas no relógio. Desculpe, essas ferramentas mais aqui. Estas ferramentas são grandes. Se alguém tiver alguma dúvida, você também pode enviar e-mail me. Este é o meu e-mail normal. E este é o meu e-mail de trabalho, que é quando eu trabalho em SEAS. OK, obrigado. Obrigado, pessoal. Você está pronto para ir. Você não tem que ficar aqui. Não bater palmas. Isso é estranho. OK, obrigado, pessoal.