I-NOZex Posted October 10, 2012 at 02:19 PM Report #478573 Posted October 10, 2012 at 02:19 PM Pois bem tava aqui eu a trabalhar e tal, e surgiu uma duvida a nivel de segurança... para os outros campos, get's, post's e associados estou a usar esta função: function anti_injection($sql, $formUse = true) { // remove palavras que contenham sintaxe sql $sql = preg_replace("/(from|select|insert|delete|where|drop table|show tables|like|grant|revoke|#|\*|--|\\\\)/i","",$sql); $sql = trim($sql);//limpa espaços vazio $sql = strip_tags($sql);//tira tags html e php if(!$formUse || !get_magic_quotes_gpc()) $sql = addslashes($sql);//Adiciona barras invertidas a uma string return $sql; } mas o problema é que eu estou a usar um editor visual de html (o tinymce mais precisamente), sendo assim, vai ter de passar dados html, e nao sei como fazer para tornar essa transmissao de dados segura... ja agora esse campo que recebe os dados html, está no tipo memo, talves se usar o tipo blob seja melhor? Aguardo opiniões B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
HappyHippyHippo Posted October 10, 2012 at 02:39 PM Report #478582 Posted October 10, 2012 at 02:39 PM já pensaste que se o texto processado for em inglês estás a remover palavras bastante usadas como from ou select ??? caso não gostes de PDO ou outro sistema de prepared statements, o método normal de detecção de SQL injection é a verificação da terminação da string: exemplo: $string = "i'am Paul"; $sql = "insert into my_table(name) values('{$string}')"; echo $sql; // insert into my_table(name) values('i'am Paul') // A // | // Erro no SQL um exemplo de SQL injection seria: $string = "'); drop table my_table; --"; $sql = "insert into my_table(name) values('{$string}')"; echo $sql; // insert into my_table(name) values(''); drop table my_table; --') // A A A // | | | // Fim da SQL | | // Apagar a tabela | // O resto é dado como comentário como vês, o problema é bvem complicado. e é por isso que se usa os preparred statements conclusão : usa-os IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
I-NOZex Posted October 10, 2012 at 02:44 PM Author Report #478586 Posted October 10, 2012 at 02:44 PM (edited) sim, mas aqela funçao é para campos que nao vao levar essas palavras, ja o editor de texto pode levar provavelmente! nao estou a usar o PDO, estou a usar Mysqli com uma classe recriada com o uso de prepared statments, mas o meu medo é ali o editor de texto, pois quanto a input's, gets e posts eu sei bem como defender de injecçoes, ja apanhei muitos sites assim, para aprendizagem didatica apenas, mas nunca tinha usado textareas para meter dados na DB, e tenho medo de certas coisas, como o inject mas tambem o xss... btw, encontrei duas soluçoes: http://www.tinymce.com/forum/viewtopic.php?id=28909 http://htmlpurifier.org/demo.php qual recomendarias? Edited October 10, 2012 at 02:46 PM by I-NOZex B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
HappyHippyHippo Posted October 10, 2012 at 02:53 PM Report #478591 Posted October 10, 2012 at 02:53 PM a que te sentires melhor. por não usar TinyMCE, não posso recomendar um ou outro (assim como não conheço o segundo link) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
I-NOZex Posted October 10, 2012 at 03:10 PM Author Report #478597 Posted October 10, 2012 at 03:10 PM eu o 2º ja tinha passado por ele a uns tempos, mas nao sei bem como o implementar... visto que o 1º ta nos foruns de suporte php do tinymce, acho que vou usar esse... qualqer das formas, este editor é para uma backstage, so admins vao acedelo, mas convem obviamente, sempre garantir que está seguro. Bem, qualqer das formas, obrigado pela tua opiniao 😉 so uma ultima qestao antes de resolver, na db o campo está como memo, achas que está bem? ou devia de ser de outro tipo? tipo blob,,, B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
HappyHippyHippo Posted October 10, 2012 at 03:19 PM Report #478601 Posted October 10, 2012 at 03:19 PM não conheço o tipo memo, isso é MSSQL ? se for MySQL, vê aqui o que pretendes : http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html como deverá ser texto, a escolha directa seria text ou longtext IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
I-NOZex Posted October 10, 2012 at 03:58 PM Author Report #478607 Posted October 10, 2012 at 03:58 PM lol nao sei onde fui buscar isso xDD tava a fazer confusao com mssql sim, o campo esta no tipo texto, com o comprimento maximo... entao pronto, está tudo resolvido, novamente obrigado pela a ajuda 😉 B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
pikax Posted October 10, 2012 at 04:27 PM Report #478611 Posted October 10, 2012 at 04:27 PM não conheço o tipo memo, isso é MSSQL ? acho que e' do access http://www.w3schools.com/sql/sql_datatypes.asp Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
brunoais Posted October 13, 2012 at 06:23 PM Report #479001 Posted October 13, 2012 at 06:23 PM Se não gostas de prepared statements (n vejo a verdadeira razão) usa isto: http://php.net/manual/en/mysqli.real-escape-string.php Não uses o que fizeste. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now