Fabyo 66 Denunciar post Postado Março 23, 2005 Anti SqlInjection e tags html PHP function anti_injection($sql) { // remove palavras que contenham sintaxe sql $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); $sql = trim($sql);//limpa espaços vazio $sql = strip_tags($sql);//tira tags html e php $sql = addslashes($sql);//Adiciona barras invertidas a uma string return $sql; } //modo de usar pegando dados vindos do formulario $nome = anti_injection($_POST["nome"]); $senha = anti_injection($_POST["senha"]); ?> Compartilhar este post Link para o post Compartilhar em outros sites
jonas_ti 0 Denunciar post Postado Março 29, 2005 Bacana... eu uso a função addslashes para esse tipo de coisa, mas vou testar a sua para ver qual é a melhor! PHP $variavel = addslashes($_POST["variavel"]); Veja no manual do php sobre essa função! Compartilhar este post Link para o post Compartilhar em outros sites
JuSeH 0 Denunciar post Postado Abril 10, 2005 é possivel se realizar um sql-injection atravez de cookies? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 11, 2005 para escapar aspas você pode usar mysql_escape_string() e sobre cookie nao porque o cookie é uma informação salva no micro do cliente e é usado para posterior leitura dele, guardar informações e fazer logins etc... nao tem sentido nem logica o cookie fazer uma sql injection , o sql injection é uma sintaxe sql feita no banco de dados para executar tarefas nao esperadas como listar os usuarios e senhas, apagar registros etc... resumindo o sql injection é apenas uns comandos sql pedindo pra executar algo e se seu sistema deixar passar ele executa ,por isso previna-se contra esses ataques estude sobre sql injection e php injection Compartilhar este post Link para o post Compartilhar em outros sites
Cerrito 0 Denunciar post Postado Abril 11, 2005 Muita gente tem certo receio sobre cookies, mas lembrando ele só pode ser lido pelo servidor onde foi criado...então não faz sentido alguem criar um cookie e faça um sql injection no seu próprio sistema...e bem interesante a o metodo do fabyo para evitar esse tipo de ataque, pena que poucos lembram desse tipo de cuidado tão simples...abraçosMarcio Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 11, 2005 Só lembrando que tem programas que consegue roubar os cookies, é o caso que andou acontecendo no orkut esses tempo atraz mas depende muito da sua propria segurança Compartilhar este post Link para o post Compartilhar em outros sites
noseDeep 0 Denunciar post Postado Junho 7, 2005 mto bom vlw. Compartilhar este post Link para o post Compartilhar em outros sites
TrymBeast 0 Denunciar post Postado Junho 8, 2005 Bacana... eu uso a função addslashes para esse tipo de coisa, mas vou testar a sua para ver qual é a melhor!E aí?qual é a melhor?Eu também só uso addslashes para evitar o sql injection, o resto também uso, mas já depende do que eu quero deixar que seja possível fazer. PHP [*]preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); Nunca usei foi isso, acho que com o addslashes nenhum código SQL funcionaria ou estou errado, pelo menos na minha máquina eu já experimentei e nunca deu para fazer o sql injection. Compartilhar este post Link para o post Compartilhar em outros sites
pa_bruno 0 Denunciar post Postado Junho 8, 2005 pow, essa linha 6eu naum entendi praticamente nada... uahuahuaha poderia soh dar uma explicadinha??? faloww... Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Junho 9, 2005 legal fabyo, soh uma coisinha, acho q mta gente c enrrolo com a funcao sql_regcase(), bom eu mesmo n conhecia ela :P/> , mas tipo, ela soh faz gerar o regexp pra maiusculos e minusculos, oq eu achei desnescessario nesse caso, vendo q você poderia terminar o regexp com um /i o comando na minha opiniao devia ficar assim (pra simplificar): <!--php1--><div class='phptop'>PHP</div><div class='phpmain'><!--ephp1--><link href = "style_images/css_php.css" rel = "stylesheet" type = "text/css"> [*]preg_replace("/<span style=' color: green;'>(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/i"</span>,"",$sql); <!--php2--></div><!--ephp2--> acho q ja facilita pra galera entende (me corrija c eu estiver errado) flw Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Junho 9, 2005 é ta certo tbm ,mas é bom o pessoal conhecer varias funções novas, dai nao fica só na mesma, mas valeu Compartilhar este post Link para o post Compartilhar em outros sites
drakko 0 Denunciar post Postado Junho 30, 2005 olha, eu não entendo muita coisa sobre o Php e estou sofrendo com vários problemas por não ter anti sql-injection... gostaria de saber aonde inserir o script para que possa me proteger...agradeço desde já! Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 1, 2005 exemplo : $dados = anti_injection($_POST["dados"]); só usar a função quando você recebe os dados do formulario se tiver mais duvidas posta ai Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Julho 3, 2005 Fabyo, tipo, pra uso em GET e POST, eu acho q sua funcao deveria sofrer uma alteracao, vo da uma sugestao aki, depois você comenta, eu deixaria sua funcao assim: <!--php1--><div class='phptop'>PHP</div><div class='phpmain'><!--ephp1--><link href = "style_images/css_php.css" rel = "stylesheet" type = "text/css"> [*]<? [*] [*]function anti_injection<span style=' color: green;'>($sql, $formUse = true)</span> [*]{ [*]<span style=' color: DarkGray;'>// remove palavras que contenham sintaxe sql</span> [*]$sql = preg_replace("/<span style=' color: green;'>(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/i"</span>,"",$sql); [*]$sql = trim<span style=' color: green;'><span style=' color: green;'><span style=' color: green;'>($sql)</span></span></span>;<span style=' color: DarkGray;'>//limpa espaços vazio</span> [*]$sql = strip_tags<span style=' color: green;'><span style=' color: green;'><span style=' color: green;'>($sql)</span></span></span>;<span style=' color: DarkGray;'>//tira tags html e php</span> [*]if(!$formUse || !get_magic_quotes_gpc<span style=' color: green;'>()</span>) [*] $sql = addslashes<span style=' color: green;'><span style=' color: green;'><span style=' color: green;'>($sql)</span></span></span>;<span style=' color: DarkGray;'>//Adiciona barras invertidas a uma string</span> [*]return $sql; [*]} [*] [*]<span style=' color: DarkGray;'>//modo de usar pegando dados vindos do formulario</span> [*]$nome = anti_injection<span style=' color: green;'>($_POST["nome"])</span>; [*]$senha = anti_injection<span style=' color: green;'>($_POST["senha"])</span>; [*] [*]?> <!--php2--></div><!--ephp2--> dessa forma, ele soh da addslashes c o magic_quotes nao estiver on, pq c estiver, você acaba espacando 2 vezes barras... e eu tb adicionei um parametro na funcao, pra dizer c ta usando em dados vindos de formulario (get, post...), q por padrao eh true, c a pessoa pode mandar esse argumento como falso para forcar o addslashes posta ai oq você acho da ideia ;)/> Compartilhar este post Link para o post Compartilhar em outros sites
_killer_ninja_ 0 Denunciar post Postado Julho 20, 2005 Por favor como eu faço pra usar este script onde?no meu site hospedado em localhost, hackers usam paginas do meu site pra entrar no banco de dados SQL e alterar deletar etc os dados o que fazer pra proteger essas paginas? Compartilhar este post Link para o post Compartilhar em outros sites
Flybybetto 0 Denunciar post Postado Julho 31, 2005 Eu uso o htmlentities$nome = htmlentities($nome,ENT_QUOTES,'UTF-8');Ele transforma tudo o q precisar em entidades HTML, ou seja, " vira "e; e por ae vai, para uma coisa como um Mural, ou um comentario, fica perfeito, pq a pessoa pode escrever <b> q ele vai tranformar em <b>Claro, no caso de um Login e senha, um ereg_replace() seria o melhor. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 31, 2005 Flybybetto nao fica bom usar esse esquema pra usar num select esse esquema se usa mais em postagens, você tem que entender sobre sql injection pra saber do que se trata , por exemplo um usuario mal intensionado pode injetar codigos maliciosos no seu banco de dados ou ate deletar ele e mesmo você usando assim nao ira impedir nada e outra coisa usando preg_replace eh muito mais rapido que ereg_replace() e uma funçao para passar o select com mais segurança eh usar mysql_escape_string() Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Julho 31, 2005 Mas porque não irá adiantar? Se os caracteres utilizados em SQLInjection serão convertidos para HTML entities?Exemplo: 1' OR 1='1-- Os seus caracteres ' = passariam a assumir o valor HTML.Pois creio que para fazer SQLInjection é necessário dos caracteres ' ; =. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 31, 2005 pra começar os caracteres nao se usa isso porque nao tem logica fazer assim ainda mais que no um sql injection nao ta so em apostrofos a pessoa pode injetar tbm um sinal de comentario e dai o banco iria ignorar tudo e aceitar so o que passar em seguida usando essa funçao pode ate funcionar mas nao deixa de ser uma gambi o correto foi o que eu falei acima use mysql_escape_string Escapa uma string para uso com o mysql_query. Esta função irá escapar o unescaped_string, assim será seguro coloca-la na função mysql_query(). e nao transforma o que a pessoa digitou em HTML entities , transforma dados em HTML entities serve para exibiçao na tela do usuario em modos de postagens tipo o forum mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Julho 31, 2005 Certo, certo... Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites