Inserir java no site atrapalha o SEO

Queridos colegas,

Sou umas das sócias da empresa sitepor500 e um dos novos programadores está com uma idéia de instalarmos um plugin Java no site para receber orçamentos online. Atualmente usamos PHP para isso mas tivemos muitas invasões e constantemente alguem invade o sistema e precisamos restaurar um backup.

O problema é que estamos muito bem ranqueados no Google e tenho certeza que Java nao é algo mais leve que PHP e provavelmente poderá nos atrapalhr no SEO. Além disso essa área de orçamentos possui centenas de paginas que o Google indexa e como as paginas estao em PHP nao temos problema algum. Mas se o sistema for feito em Java e se a exibicao dos orcmaentos for feito em java, o Google acessará essas informações?

Outro exemplo é o forulário de Briefing, onde os clientes enviam as solicitações pré criação do site. Frequentemente temos ataques nesse formlario. Fazendo-o abrir dentro de uma interface em Java por acaso ainda manterá o forulario funcionando em tablets e dispositivos moveis?

obrigada pela atençao. Postei essa pergunta no forum JAVA BASICO pois eu nao sei nada da Java mas nao sei se aqui é o melhor lugar para isso.

Se você estiver se referindo a Applets em um site público, considero uma péssima prática (isso inclui flash também). Se vocês estão focado em seo, tudo que está dentro do Applet não será enxergado pelos mecanismos de busca. Se eu não estiver enganado (alguém me corrija por favor), pelo menos em iPhone e iPad não é possível executar applets a menos que se faça Jailbreak.

Agora se você estiver falando de Servlets/JSP (Java para web, fica do lado do servidor), é uma boa opção de tecnologia e te dá um leque maior para fazer mais coisas em curtos espaços de tempos (tem muito componente pronto e documentado na internet para uso), mas só a segurança ainda não justificaria pra vocês saírem do PHP e migrarem para ele.

Que tipo de ataque nos formulários ?

Mail inject ? (falha de programação)
Envio de Spam? (um bom captcha resolve)
SQL inject ? (falha de programação)

edit: vi que o formulário de vocês não tem captcha. Aqui já é uma boa porta de entrada para coisas indevidas.

Querido,

Primeiramente obrigada pela ajuda. O tipo de ataque mais comum é que o usuario troca o MIME e o servidor salva o arquivoa nexado no Briefing ou no formulario de orcamento. Por exemplo ele anexa um arquivo .exe com MIME IMage/JPEG e o servidor aceita pois ele só faz conferencia do MIME e nao da extensao.

Outro tipo de ataque é a utilização de “include” no PHP pois permite que a pessoa inclua um arquivo fonte de fora do seridor e execute-o dentro. Nosso programador disse que o Java iria minizar esses 2 tipos de ataques.

Com relação a applet ou servlet eu nao tenho a menor ideia. Eu posso perguntar pra ele amanha e te retorno aqui, pode ser?

Cmo relacao ao captcha concordo contigo mas perdemos muitos clientes quando habilitamos o captcha. Dificulda muito ainda mais para os leigos. E nosso problema nunca foi robo automatizado preenchendo formulario, pelo menos até agora hehe.

Para vc ter uma ideia onde temos ataques mais frequentes é no link http://sitepor500.com.br/?aceitar_contrato . Veja que existe um formulário onde o usuário pode anexar arquio (selecionando a opcao OUTRO no contrato) e é possível forjar o MIME facilmente com js.

O seu problema iria ocorrer com qualquer linguagem (Java, PHP, etc.) porque é um ataque que ocorre depois que o arquivo foi “uploaded” para sua aplicação, certo?

Não é bom usar uma applet, a rigor é até pior em termos de segurança hoje em dia (já acharam tantos buracos no Oracle Java Plug-In que muitos browsers bloqueiam isso por default).

De fato, apenas conferir o “mime type” não é suficiente.

Provavelmente vocês terão de escanear os arquivos recebidos, primeiramente com alguma coisa que olhe o arquivo e indique qual o verdadeiro tipo dele (por exemplo, o Linux ou o Cygwin tem um comando “file” que determina o tipo do arquivo (http://pt.wikipedia.org/wiki/File_(Unix) ) , e existe uma solução PHP que implementa o “file”: - http://www.php.net/manual/pt_BR/function.finfo-file.php . )

Além disso, um antivírus é sempre bom ( http://www.clamav.net/lang/pt/download/third-party-tools/3rdparty-library/ ).

Não sei se é o caso de deixar o site de vocês compilado usando algo como o HipHop (usado pelo Facebook) :

[quote=amandanovaes]Querido,

Primeiramente obrigada pela ajuda. O tipo de ataque mais comum é que o usuario troca o MIME e o servidor salva o arquivoa nexado no Briefing ou no formulario de orcamento. Por exemplo ele anexa um arquivo .exe com MIME IMage/JPEG e o servidor aceita pois ele só faz conferencia do MIME e nao da extensao.

Outro tipo de ataque é a utilização de “include” no PHP pois permite que a pessoa inclua um arquivo fonte de fora do seridor e execute-o dentro. Nosso programador disse que o Java iria minizar esses 2 tipos de ataques.

Com relação a applet ou servlet eu nao tenho a menor ideia. Eu posso perguntar pra ele amanha e te retorno aqui, pode ser?

Cmo relacao ao captcha concordo contigo mas perdemos muitos clientes quando habilitamos o captcha. Dificulda muito ainda mais para os leigos. E nosso problema nunca foi robo automatizado preenchendo formulario, pelo menos até agora hehe.

Para vc ter uma ideia onde temos ataques mais frequentes é no link http://sitepor500.com.br/?aceitar_contrato . Veja que existe um formulário onde o usuário pode anexar arquio (selecionando a opcao OUTRO no contrato) e é possível forjar o MIME facilmente com js.[/quote]

quando você recebe o arquivo do lado do servidor, não da pra verificar a extenção do arquivo ? se for exe não faz nada…

usando:

[code]if (pathinfo($arquivo)[extension] != “exe”){

faz o processamento.

}[/code]

[quote=douglaskd]
quando você recebe o arquivo do lado do servidor, não da pra verificar a extenção do arquivo ? se for exe não faz nada…
usando:

if (pathinfo($arquivo)[extension] != "exe"){ faz o processamento. }[/quote]

A extensão não é suficiente. Eu sugeriria tentar escanear os arquivos, mas como é uma operação lenta, provavelmente vocês terão de deixar essa operação de “scanning” em uma fila, para que não “mate” a CPU da máquina que for fazer o escaneamento. Só depois de o arquivo ter sido declarado como “isento de vírus” é que você

Note que mesmo arquivos de imagens (.PNG, .JPG) podem ser explorados para inserir vírus. Se ele tiver sido convenientemente mal-formado, ele pode disparar um bug em uma biblioteca usada pelo seu programa preferido de visualização de imagens e invadir a máquina. E é por isso que tudo deve ser escaneado: arquivos de imagens, documentos etc.

Não é por nada não, mas deve haver alguém que, mediante o pagamento de alguma consultoria (ou mesmo aí na Universidade deve haver alguém aí dando sopa…), possa fazer um “pentest” (penetration test) no seu site, e dar um relatório sobre o que mais está vulnerável. Cuidado que nesse ramo de segurança há também alguns picaretas…

Não é porque o Facebook é em PHP que é intrinsecamente vulnerável.

Não passe seu site para Java só porque “a grama do vizinho é mais verde”.

Em vez disso, é necessário usar as práticas corretas de codificação em PHP para poder limitar os problemas. Não é porque os sites dos bancos são em Java que eles são mais seguros, muito pelo contrário.

[quote=entanglement][quote=douglaskd]
quando você recebe o arquivo do lado do servidor, não da pra verificar a extenção do arquivo ? se for exe não faz nada…
usando:

if (pathinfo($arquivo)[extension] != "exe"){ faz o processamento. }[/quote]

A extensão não é suficiente. Eu sugeriria tentar escanear os arquivos, mas como é uma operação lenta, provavelmente vocês terão de deixar essa operação de “scanning” em uma fila, para que não “mate” a CPU da máquina que for fazer o escaneamento. Só depois de o arquivo ter sido declarado como “isento de vírus” é que você

Note que mesmo arquivos de imagens (.PNG, .JPG) podem ser explorados para inserir vírus. Se ele tiver sido convenientemente mal-formado, ele pode disparar um bug em uma biblioteca usada pelo seu programa preferido de visualização de imagens e invadir a máquina. E é por isso que tudo deve ser escaneado: arquivos de imagens, documentos etc. [/quote]

arquivo JPG, agora fiquei curioso, tem algum virus jpg ai, que não seja, imagem.jpg.exe, pra eu analisa-lo

Pessoal, vocês são geniais! MUUUUITO obrigada! A melhor forma é verificar mesmo a extensão certo? Se verificar a extensao e impedir queo usuario faça upload de arquivo php3 php2 php exe bat… eu posso me proteger certo? ENTÃO porque o browser envia o MIME/TYPE se pode-se abstrair o MIME/TYPE da propria extensao que vem no nome do arquivio?

Verificar a extensão não é suficiente. Aquela biblioteca do PHP que eu te indiquei analisa o arquivo, usando o algoritmo do programa “file” do Unix/Linux, e diz mais ou menos o que o arquivo é.

este arquivo vai pra onde ? para um diretório, e-mail, é processado por um sistema?

como funciona ?

Queridos,

O arquivo é salvo num diretório relativo ao dominio principal. Entao tecnicamente se o usuario soubesse exatamente a URL do arquivo apos o upload ele poderia executar o arquivo e comprometer o servidor se o arquivo for PHP.

Aquela biblioteca que voces recomendaram é bacana. Eu li e achei bem interessante entrtanto acho que é um exageiro para um formulário tao simples… A ideia que voces deram de validar a extensao eu achei fantastica. Eu nao entendi pq eu ainda teria que usar aquela biblioteca para escanear o arquivo… veja, se eu bloquear o upload de arquivos php e qualquer arquivo que meu servidor possa interpretar (como asp…) acho que já estou à prova de ataques certo? Digo, ataques ao servidor. MEsmo que o usuario faça upload de um arquivo .exe esse arquivo nao podera comprometer meu servidor, correto?

Obrigada novamente.

Espera um pouco. Se o usuário subir o arquivo, ele já fica valendo dentro do site de vocês? Então realmente você tem de checar se não é um .exe ou .php por exemplo.

[quote=amandanovaes]Queridos,

O arquivo é salvo num diretório relativo ao dominio principal. Entao tecnicamente se o usuario soubesse exatamente a URL do arquivo apos o upload ele poderia executar o arquivo e comprometer o servidor se o arquivo for PHP.

Aquela biblioteca que voces recomendaram é bacana. Eu li e achei bem interessante entrtanto acho que é um exageiro para um formulário tao simples… A ideia que voces deram de validar a extensao eu achei fantastica. Eu nao entendi pq eu ainda teria que usar aquela biblioteca para escanear o arquivo… veja, se eu bloquear o upload de arquivos php e qualquer arquivo que meu servidor possa interpretar (como asp…) acho que já estou à prova de ataques certo? Digo, ataques ao servidor. MEsmo que o usuario faça upload de um arquivo .exe esse arquivo nao podera comprometer meu servidor, correto?

Obrigada novamente.[/quote]

o arquivo é salvo dentro da pasta WWW ?

após o upload o usuário pode ver o arquivo que ele enviou ? ou somente vocês acessam este arquivo ?

Apos o envio do arquivo ele fica salvo no diretorio sitepor500.com.br/arquivos juntamente com todos os contratdos anexados. Se o usuario soubesse o nome do arquivo salvo no servidor ele poderia executar pela URL. Mas veja, se eu impedir o upload de PHP eu evito que meu ervidor seja invadido, correto amigo?

Eu recomendaria que você sempre checasse os arquivos que chegam e se possível os renomeasse, para ver se eles podem ser executados no seu servidor.

Arquivos como *.php provavelmente podem ser renomeados como *.php.txt.
Arquivos como *.exe ou .so. não deveriam ser nem gravados.
Se seu servidor for Unix/Linux, é necessário você realmente investigar (com o comando file ou a biblioteca do PHP que lhe indiquei), porque arquivos executáveis podem ter qualquer nome e extensão.

  • verificar extensão ok, além disso:

você tem um erro de segurança/privacidade grave ai,

você não pode expor esses documentos,

você precisa bloquear esta pasta para acesso por URL

http://www.lucaspeperaio.com.br/blog/utilidades-do-arquivo-htaccess/

se vocês precisarem acessar esses arquivos, então você pode criar uma pagina.php fora desta pasta que necessita de login e senha. então esta página acessa os arquivos do diretório.

[apaga la em cima o diretorio que você colocou] coloque xxx no lugar rsrs

  • verificar extensão ok, além disso:

você tem um erro de segurança/privacidade grave ai,

você não pode expor esses documentos,

você precisa bloquear esta pasta para acesso por URL

http://www.lucaspeperaio.com.br/blog/utilidades-do-arquivo-htaccess/

se vocês precisarem acessar esses arquivos, então você pode criar uma pagina.php fora desta pasta que necessita de login e senha. então esta página acessa os arquivos do diretório.

[apaga la em cima o diretorio que você colocou] coloque xxx no lugar rsrs[/quote]

MUUUITO obrigada! Mudei para xxx conforme vc disse. Realmente há uma falha de privacidade permitir que um leia o arquivo do outro, mas o nome do arquivo é gerado com um hash bem grande entao dificilmetne alguem sabera o nome do arquivo do outro

De qualquer estou muito grata pela sua atencao!

[quote=douglaskd][quote=amandanovaes]Queridos,

O arquivo é salvo num diretório relativo ao dominio principal. Entao tecnicamente se o usuario soubesse exatamente a URL do arquivo apos o upload ele poderia executar o arquivo e comprometer o servidor se o arquivo for PHP.

Aquela biblioteca que voces recomendaram é bacana. Eu li e achei bem interessante entrtanto acho que é um exageiro para um formulário tao simples… A ideia que voces deram de validar a extensao eu achei fantastica. Eu nao entendi pq eu ainda teria que usar aquela biblioteca para escanear o arquivo… veja, se eu bloquear o upload de arquivos php e qualquer arquivo que meu servidor possa interpretar (como asp…) acho que já estou à prova de ataques certo? Digo, ataques ao servidor. MEsmo que o usuario faça upload de um arquivo .exe esse arquivo nao podera comprometer meu servidor, correto?

Obrigada novamente.[/quote]

o arquivo é salvo dentro da pasta WWW ?

após o upload o usuário pode ver o arquivo que ele enviou ? ou somente vocês acessam este arquivo ?[/quote]

Sim, o arqiuvo fica salvo num direótior acessível pela URL entretanto esse endereço não é divulgado.

obrigada pela atenção.