testes/js/page/Modulo_Autenticacao/Funcao/segurancainput.js

70 lines
3.2 KiB
JavaScript

function BloqueiSlQ(username, password, erro5004) {
//Camada de segurança -abertura-
// Função para escapar caracteres HTML, resumidamente ele pega o paramentro definido e subistitui todas as letras já definidas nela pelos termos descritos em "" para assim quebrar com quaisquer entrada de script dentro dos inputs.
function escapeHTML(str) {
return str
.replace(/&/g, "&")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#39;")
.replace(/V/g, "&#39;")
.replace(/C/g, "&#39;")
.replace(/a/g, "&#39;")
.replace(/i/g, "&#39;")
.replace(/o/g, "&#39;")
.replace(/u/g, "&#39;")
.replace(/b/g, "&#39;")
.replace(/c/g, "&#39;")
.replace(/l/g, "&#39;")
.replace(/d/g, "&#39;")
.replace(/e/g, "&#39;")
.replace(/t/g, "&#39;")
.replace(/1/g, "&#39;")
.replace(/2/g, "&#39;")
.replace(/3/g, "&#39;")
.replace(/4/g, "&#39;")
.replace(/5/g, "&#39;")
.replace(/6/g, "&#39;")
.replace(/7/g, "&#39;")
.replace(/8/g, "&#39;")
.replace(/9/g, "&#39;");
}
// Aqui ele armazena em constantes os termos relacionandos a funções sqls, e funções de scripts para serem redirecionadas.
const containsScript = /<script>|<\/script>|script/i;
const containsSQL = /select|insert|update|delete|drop|create|table|union/i;
//Aqui é definido mais duas constantes para armazenar as comparações boleanas, onde só é necessario que um dos cenários seja verdadeiro.
const hasScriptOrSQLInUsername = containsScript.test(username) || containsSQL.test(username);
const hasScriptOrSQLInPassword = containsScript.test(password) || containsSQL.test(password);
//Aplicação dentro de if se trabalhar pelo lapidar das informações de comparação, onde inicialmente ele definiu os parametros, para logo depois aplicas as compações entre eles, registrando as comparações dentro do input
if (hasScriptOrSQLInUsername || hasScriptOrSQLInPassword) {
erro5004.innerHTML = "<div class='colum_1'><button id='fechar' class='X'>X</button></div>"
+ "<div class='colum_2'><p>As entradas desse formulário não podem receber scripts ou comandos SQL.</p></div>";
console.log(escapeHTML(username));
console.log(escapeHTML(password));
erro5004.style.height = '45vh'; // Ajusta a altura
erro5004.style.opacity = '1'; // Define a opacidade
erro5004.style.transition = '1s ease'; // Adiciona a transição
const fecharBotao = document.getElementById('fechar');
fecharBotao.addEventListener('click', () => {
erro5004.style.height = '0vh'; // Oculta a mensagem
erro5004.style.opacity = '0'; // Define a opacidade
erro5004.style.transition = '1s ease'; // Adiciona a transição
});
return true; // Retorna 'true' para indicar que há um problema e deve impedir o envio
//fechar da camada de segurança
}
return false; // Retorna 'false' se não houver problemas
}