Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

criatividade zero

segurança de arquivos

Recommended Posts

Volto no que eu disso no meu outro post:

-> Quando é que se um cara enviar um código php por um input text, q esse código será executado?

nao entendi bem, mas creio que seja na hora se inserir na database ou escrever um xml

pensa um pouco mais sobre isso.. só dele inserir no banco de dados nada será executado.

se eu enviar uma string de um código php, e gravar no banco diretamente, não estou executando nada.

 

 

Na criação do xml, até pode ser, mas ai depende muito de como você está fazendo a criação desse arquivo.

Note: resolva um problema que você tem, e não um que você não tem.

 

 

Se você ficar tentando resolver problemas que não existem, você só criará mais problemas.

 

 

 

-> Entenda como isso é possível, e se isso é possível no teu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara .. que bagunça .. seu sistema vai ficar tão seguro que nem você vai conseguir entrar ..

Pensa no seguinte, trata o simples, apenas não deixe executar, se o cara enviou insert, select, drop .. você vai ver keyword por keyword sql no teu filtro ? não vai , então não adianta nada você deixar 'insert' sendo que drop passa ..

 

Veja qual extensão você está usando para trabalhar com o banco, talvez a mesma ofereça métodos para você se assegurar de injeções sql.

 

Em relação aos arquivos, EU não sei se dá pra enviar um arquivo pelo servidor, sem o formulário ser submetido .. assim, só se você criar um 'best way to send the file' .. uma vez o formulário submetido, faz uma verificação, if básico cara .. você resolve essa 'complicação que você tá arrumando' toda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pensa um pouco mais sobre isso.. só dele inserir no banco de dados nada será executado.

se eu enviar uma string de um código php, e gravar no banco diretamente, não estou executando nada.

 

Na criação do xml, até pode ser, mas ai depende muito de como você está fazendo a criação desse arquivo.

Note: resolva um problema que você tem, e não um que você não tem.

 

Se você ficar tentando resolver problemas que não existem, você só criará mais problemas.

 

 

chegamos ao X da questão que eu disse desde o começo :)

sqlinjection eu conheco e sei como tratar

os outros termos eu não ei o que podem fazer

 

nao estou tentando resolver problemas que não existem, simplesmente nao conheco tal pratica e vim obter ajuda

 

 

é possivel injetar algum codigo via form para executar a criação de um arquivo contendo dados?

 

Sim, é possível.

 

O código contendo o código malicioso pode ser executado pela própria aplicação ou pelo usuário de forma remota.

 

o sistema apenas insere na database ou grava um xml

em qual momento um injection pode causar problema?

 

foi dito que gravar no xml pode ser vulnerável

e como tratar?

 

Andrey Knupp

esqueça o sql injection, ele nao é o problema

 

ja esta claro que a questão é injeçao é como execução de codigo para criação de arquivo ou termos que possam 'quebrar' a criação de um xml

 

qual verificação IF quando o form for submetido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

já ouviu dizer que "não existem regras universais para tudo"?

 

é aqui que estamos.

Seu sistema só insere no banco, e grava xml.

 

 

Okay, como você grava esse xml ?

Você precisa analisar o teu sistema, e ver onde nele pode existir a vulnerabilidade, e não ficar louco, tentando encontrar uma forma geral, de como as coisas acontecem, pois elas podem não estar acontecendo para você.

 

 

E como você insere no banco ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu sistema só insere no banco, e grava xml.

 

ha formulários que gravam no banco de imediato, outros vão para xml

2 tipos distintos de informação

 

Okay, como você grava esse xml ?

Você precisa analisar o teu sistema, e ver onde nele pode existir a vulnerabilidade, e não ficar louco, tentando encontrar uma forma geral, de como as coisas acontecem, pois elas podem não estar acontecendo para você.

 

como eu escrevo o xml?

com file_put_contents - é isso que quer saber ou entendi errado?

recebo o form e gravo, ignoro o filtro sqlinjection - pq nao vai pro banco - mas aqui não sei o que/como filtrar

 

 

E como você insere no banco ?

mysqli

Compartilhar este post


Link para o post
Compartilhar em outros sites

com file_put_contents - é isso que quer saber ou entendi errado?

isso! exatamente isso que eu queria saber!

 

o file_put_contents(), foi a vulnerabilidade que eu imaginei. Pois você está escrevendo diretamente em um arquivo.

Se esse arquvo puder ser executado(for interpretado como script dinâmico), então temos aqui a falha.

 

 

 

mysqli

Okay, partindo do principio:

mysqli::query

 

http://www.php.net/manual/en/mysqli.query.php

Performs a query against the database.

 

Portanto, só executa uma única query. Se você receber um injection com aspas, ou um que tente enviar a tua query + alguma outra query, isso não será executado.

Pois o método do mysqli, q executa multiplas queries é o: ::multi_query()

http://www.php.net/manual/en/mysqli.multi-query.php

 

 

isso nos faz concluir que se você só usa o ->query(), então todo o trabalho de anti injection que você fizer contra multiplas queries é desnecessário.

 

 

Logo, qual forma de SQL Injection sobra ?

'; DROP table.. não funciona pelo que vimos acima.

 

Sobra os injections de continuação:

WHERE login = '' OR 1 = 1;

 

Para esses casos, basta impedir a agulha de entrar: tomar cuidado com as aspas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com file_put_contents - é isso que quer saber ou entendi errado?

isso! exatamente isso que eu queria saber!

 

o file_put_contents(), foi a vulnerabilidade que eu imaginei. Pois você está escrevendo diretamente em um arquivo.

Se esse arquvo puder ser executado(for interpretado como script dinâmico), então temos aqui a falha.

qual seria a opção?

na teoria apenas grava o xml, quem roda é a adm.

 

suponhamos, eu nao faço a minima ideia do codigo que seria usado para criar um arquivo em uma tentativa de invasão, mas se alguem submete o form contendo: <textarea> create_file /system/hacker.php ... </textarea>

nao haveria um comando qualquer que crie tal arquivo?

 

 

a classe mysqli pode evitar o injection, mas eu mantenho a analise de quem enviou e o que foi enviado.

se o malandro tentou um injection eu vou saber quem e o que tentou, assim eu mantenho vigilancia.

o filtro é inevitavel, é um projeto grande, multi idioma e tem um sistema adm ativo para qualquer atividade suspeita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser um tanto fora do contexto técnico mas já parou pra pensar que a maior falha de segurança está no fator humano ?

 

você pode construir o sistema mais seguro e complexo do mundo mas se uma só pessoa envolvida vacilar ou sabotar, enfim... vai tudo por água a baixo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando a pergunta é: 'como tartar injection', o topico fica cheio de funções e termos que precisam ser tratados e todo mundo esta careca se saber quais são.

 

vcs estão fazendo um rodeio danado

ja disse no inicio que nada se refere à sql, ja disse que meu filtro nao é de substituição mas sim de prevenção e análise - obvio que nao vao entender o motivo pq nao conhecem o projeto, e vão achar que é em vão.

 

mas a questão aqui nao é avaliar o que estou fazendo, se é perda de tempo, se o cara do servidor vai tirar o fio da tomada ou ele mesmo vai reescrever meu codigo chulezento e no final vai tudo por água a baixo.

 

 

se vcs acham que minha roda é quadrada, deixe-a assim, mas fico grato se alguem chegar e falar:

ei criatividade zero, se alguem subeter um form com este termo, aquele termo, aquele outro termo, voce poderá ter problemas

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou tentar pela ultima vez, o problema não é o termo.

 

e sim, oq você faz com o que receber. Posso receber qq termo, criar xml, gravar no banco, fazer upload de arquivo, e meu sistema não é vulnerável.

pq não é 'este termo, aquele termo ou aquele outro' que eu foco, mas sim a manipulação disso tudo.

 

 

a segurança está em não deixar brechas no sistema, e não ficar procurando 'quais são os termos'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do que você chama de tratamento.

 

Eu garanto a consitência dos dados, e manipulo eles de uma forma que não deixo brechas.

Não tenho problemas com injections, ou vulnerabilidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu garanto a consitência dos dados, e manipulo eles de uma forma que não deixo brechas.

Não tenho problemas com injections, ou vulnerabilidades.

o topico é para aprender exatamente isso

qual manipulação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocês fazem tempestade em copo d'agua.

Proteger contra SQL Injection é fácil. Escapes! E não estou falando de magic_quotes_gpc ou addslashes() e sim de mysql_real_escape_string().

 

Antes de enviar um input por usuário, coloque token de segurança para previnir Cross Site Request Forgery.

 

Quando for dar um echo em um input vindo do usuário, utilize "echo htmlentities($input, true).".

 

E por aí vai. =p

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.