|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Accueil → WINDEV 25 → Wx - Exemplo de como Evitar SQL Inject e Proteger seu banco de dados |
Wx - Exemplo de como Evitar SQL Inject e Proteger seu banco de dados |
Débuté par adrianoboller, 20 nov. 2015 23:40 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 20 novembre 2015 - 23:40 |
Prezados,
Injeção de SQL é uma técnica usada para tirar proveito de vulnerabilidades não validados de entrada para passar comandos SQL através de uma aplicação Web para execução por um banco de dados back-end. Atacantes tirar proveito do fato de que os programadores muitas vezes encadear comandos SQL com parâmetros fornecidos pelo usuário, e podem incorporar comandos SQL dentro desses parâmetros. O resultado é que o atacante pode executar consultas SQL arbitrárias e / ou comandos no servidor de banco de dados back-end através da aplicação Web.
Segue um exemplo de como evitar SQL Inject e Proteger seu banco de dados:
IF EDT_NomePaciente = "" THEN Info("Nome do Pacientenão informado.") RETURN END
IF EDT_EmailCadastroPaciente = "" THEN Info("E-mail do Paciente não informado.") RETURN END
IF EDT_DDD = 0 THEN Info("DDD não informado.") RETURN END
IF EDT_TelefonePaciente = "" THEN Info("Telefone do Paciente não informado.") RETURN END
IF EDT_SenhaCadastroPaciente = "" THEN Info("Senha do Paciente não informada.") RETURN END
IF Length(EDT_SenhaCadastroPaciente) < 6 OR Length(EDT_SenhaCadastroPaciente) > 12 THEN Info("A senha do Paciente precisa ter entre 6 e 12 dígitos.") RETURN END
IF EDT_ConfirmacaoSenha <> EDT_SenhaCadastro THEN Info("As senhas não coincidem.") RETURN END
ip is string = BrowserIPAddress()
dadosProcedure is Data Source
dadosProcedure.nome = EDT_NomePaciente dadosProcedure.email = EDT_EmailCadastroPaciente dadosProcedure.ddd = EDT_DDD dadosProcedure.telefone = EDT_TelefonePaciente dadosProcedure.senha = EDT_SenhaCadastroPaciente
ok is boolean = HExecuteSQLQuery(dadosProcedure, ConexaoSQL, hQueryWithoutCorrection, "EXEC CadastroPaciente @nome, @email, @ddd, @telefone, @senha")
IF ok = True THEN
IF HNbRec(dadosProcedure) = 0 OR HNbRec(dadosProcedure) > 1 THEN Info("Erro interno no servidor: O resultado falhou.") RETURN END
FOR EACH dadosProcedure SWITCH dadosProcedure.Resultado CASE 201: PageDisplay(PAGE_Paciente, EDT_EmailCadastroPaciente) CASE 409: Info("Cadastro já existente no mesmo endereço de e-mail.", "Use a opção ""Esqueci Minha Senha"" para recuperar a sua senha.") CASE 403: Info("Cadastro do Paciente não liberado.") OTHER CASE: Info("Erro interno no servidor: O resultado foi inesperado.") END END ELSE Info("Erro interno no servidor: A conexão não conseguiu prosseguir.") PageDisplay(PAGE_Login) END
LINKS COMPLEMENTARES: https://pt.wikipedia.org/wiki/Inje%C3%A7%C3%A3o_de_SQL https://www.imperva.com/resources/glossary… http://www.programmerinterview.com/index.php/database-sql/sql-injection-example/
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller ______________________________________________ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 20 novembre 2015 - 23:51 |
Prezados,
Um adendo como sempre, mais super relevante, outro detalhe sempre defina a capacidade maxima de caracteres nos campos do tipo string, ali que mora o perigo.
Forte abraço e sucesso profissional
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller ______________________________________________ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 44 messages Popularité : +7 (7 votes) |
|
Posté le 23 février 2016 - 19:15 |
Perfeito!
-- Analista de Sistemas Jr Assessor de Comunicação Fotografo nas horas Vagas Pai da Alícia e Marido da Andréa <3 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 10 avril 2016 - 18:00 |
Prezados,
Apenas um conselho:
Injeção de SQL é uma técnica de injeção de código, usado para atacar aplicações orientadas a dados, no qual são inseridos em um campo de entrada instruções SQL mal-intencionados para execução (por exemplo, para despejar o conteúdo do banco de dados para o atacante). Esses ataques permitem que os invasores identidade paródia, adulteração com os dados existentes, questões de repúdio causa tal como anular operações ou mudar saldos, permitem a divulgação completa de todos os dados no sistema, destruir os dados ou torná-la indisponível, e tornar-se administradores do servidor de banco de dados.
É um dos ataques mais comuns nos sites. As melhores senhas e a melhor mentalidade pode não ser suficiente. Se você tem um site que usa esse tipo de banco de dados, você deve aprender a defender-lo.
Um exemplo de ataque:
Usuario: admin Senha: 'or''='
Aqui 5 pontos para defender-se :
1. Atualize seu sistema. Não podemos ver um monte de problema sobre a vulnerabilidade. Atualize os scripts (sistemas de gestão, fóruns) para corrigir esses problemas.
2. Reduzir os privilégios. Seu serviço não deve ter privilégios elevados para combater técnicas de hacking que os obrigam.
3. Verificação de informações. Uma mensagem de erro ajuda a hackers para encontrar as vulnerabilidades. Configurar o IIS para enviar uma mensagem de erro genérico em vez de uma mensagem específica.
. 4. Lista Negra . Uma lista de caracteres não permitidos O primeiro a colocar em é esta: " O outro é o carácter" espaço ".
5. Lista branca. Uma lista de caracteres permitidos. Este método é mais complexa do que a anterior. Com uma boa gestão dos caracteres desejados, esta pode ser uma boa solução.
Forte Abraço
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|