Jump to content


Photo

Str_replace


  • Faça o login para participar
27 replies to this topic

#1 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 23/07/2004, 12:08

Galera como eu devo usar o str_replace para tirar alguns caracteres indesejavéis que o user possivelmente possa enviar ao meu BD?


Tipo.... se o cara, maliciosamente, digitar qualquer tag html ou JS no form e enviar ao BD isso poderá causar falha no programa.... então pensei em usar o str_replace para retirar algumas tags.... alguém jah usou isso e funcionou?!


(y)
######################
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "

#2 _error_log_

_error_log_

    - = Hello my Good = -

  • Usuários
  • 122 posts
  • Sexo:Não informado
  • Localidade:Cáceres -MT
  • Interesses:PHP,Fireworks,flash

Posted 23/07/2004, 12:28

troca os caracteres @#$! por (outra_palavra)

str_replace("@#$!)"outra_palavra";$texto);

_________________________________________________________________

echo htmlspecialchars("$var", ENT_QUOTES);


Com isso ele nao colocara codigos html na pagina

<img src="img">

se tivesse isso ai ele exibiria uma imagem na hora do select.. se uzar aquela função zinha lah em cima iria aparecer só o texto e nao uma imagem.

qualquer coisa. veja no site do php.net

#3 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 13:16

Você não precisa usar str_replace, existe outra função pronta para eliminar os códigos html:

htmlspecialchars();

Faça dessa forma:

Ao gravar no banco de dados utilize addslashes(), e ao imprimir os resultados na tela, utilize:

$texto = stripslashes($texto);
$texto = htmlspecialchars($texto);
$texto = nl2br($texto);

Isso elimina as barras "\" que foram adicionadas pelo addslashes, limpa os códigos html colocando-os como texto mesmo, e muda os enters para <br> (y)

Agora um comentário, se estiver acontecendo um erro ao postar seus tópicos, não poste novamente, pois ele já foi enviado, sempre que acontecer o erro, verifique para ver se não foi postado já (y). Você teve alguns posts repedidos hein
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#4 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 23/07/2004, 13:19

Você não precisa usar str_replace, existe outra função pronta para eliminar os códigos html:

htmlspecialchars();

Faça dessa forma:

Ao gravar no banco de dados utilize addslashes(), e ao imprimir os resultados na tela, utilize:

$texto = stripslashes($texto);
$texto = htmlspecialchars($texto);
$texto = nl2br($texto);

Isso elimina as barras "\" que foram adicionadas pelo addslashes, limpa os códigos html colocando-os como texto mesmo, e muda os enters para <br> (y)

Agora um comentário, se estiver acontecendo um erro ao postar seus tópicos, não poste novamente, pois ele já foi enviado, sempre que acontecer o erro, verifique para ver se não foi postado já (y). Você teve alguns posts repedidos hein

como ficaria a inserção no banco??
mysql_query... com addslashes(),
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#5 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 13:38

$texto = $_POST['mensagem']; // Imagine o texto Mario's Bro
$texto = addslashes($texto); // Aqui ele iria ficar Mario\'s Bro

mysql_query("INSERT INTO tabela (mensagem) VALUES ('$texto')");


E quando for retornar o texto, teria que aplicar o stripslashes para remover a barra adicionada
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#6 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 23/07/2004, 13:43

Saquei
dei uma lidinha no manual e tirei minhas duvidas!!
:D
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#7 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 23/07/2004, 14:12

Agora um comentário, se estiver acontecendo um erro ao postar seus tópicos, não poste novamente, pois ele já foi enviado, sempre que acontecer o erro, verifique para ver se não foi postado já . Você teve alguns posts repedidos hein


Sr. moderador....volto a pedir desculpas ....eu tive um problema com minha conexão com o server WMONLINE as 11:56 . Eu estava obtendo mensagens de erro....

Gostaria que os demais colegas me perdoassem pelo o ocorrido e afirmo com certeza que incidentes como esse não mais ocorrerão.... Há tanto tempo cadastrado nessa comunidade esse foi meu primeiro problema.....


Grato e novamente ....perdão!

(y)
######################
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "

#8 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 14:16

Ninguém morreu por causa disso também né :P No stress, já havia ocorrendo esses erros com alguns usuários, só que parou por algum tempo, e também, fui eu mesmo que li a sua mensagem para deletar os outros ;)

Gostei do Sr. Moderador uhuhuhuhuh. Parabéns pela atitude de se desculpar (y)
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#9 MarviN*

MarviN*

    nw . newton web

  • Usuários
  • 780 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 23/07/2004, 14:34

Outra função muito útil é a strip_tags();

A vantagem é que você pode permitir algumas tags e bloquear as demais.. por exemplo:


PHP
<?php



$texto
= "Olá <b>Usuário</b>, <a href=teste.html>clique aqui</a> e visite meu site!";

$texto = strip_tags($texto, '<b><i><u>');



?>



Nesse caso, você removeria a tag <a> do $texto, mas a tag <b> passaria, pois você liberou ela utilizando o segundo parametro do strip_tags().. também passariam as tags <i> e <u>!! Interessante, não!? Muito útil para fóruns, murais e etc..
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
[ Blog Desenvolvimento Web: http://www.newtonwagner.net/blog ]
[ Diário da Selva: http://www.diariodaselva.com/ ]

[ "Não existe um caminho para a paz; a paz é o caminho." Mahatma Gandhi ]

#10 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 23/07/2004, 14:48

Caras...me expliquem uma coisa.....

qual o real perigo de não se usar por exemplo htmlspecialchars ou str_replace ou coisas do gênero?!

Tah bom....eu sei que o user pode dar uma injeção de SQL na query mas isso apenas resultaria na não exibição de um conteúdo....certo?! E quem sofreria o problema seria ele mesmo...poiis não conseguiria ver o conteúdo....
######################
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "

#11 MarviN*

MarviN*

    nw . newton web

  • Usuários
  • 780 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 23/07/2004, 15:08

Imagine que você tem um mural de recados por exemplo!!!

Além do SQL Injection, o cara pode colocar tags que danificariam o seu site, com JavaScript, IFrames, popups e tudo que o html proporciona.


Se ele colocar um iframe que chame a mesma página (no caso, a do mural) dentro dele, isso geraria um loop infinito, ou seja, o seu mural com o iframe seriam abertos, e abertos, e abertos.. consumindo sua banda e atrapalhando a navegação do se usuário.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
[ Blog Desenvolvimento Web: http://www.newtonwagner.net/blog ]
[ Diário da Selva: http://www.diariodaselva.com/ ]

[ "Não existe um caminho para a paz; a paz é o caminho." Mahatma Gandhi ]

#12 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 15:08

Somente exibição?

Imagine assim para ter o valor do perigo:

Provavelmente você conecta ao banco de dados, se ele faz um simples código que somente apresenta pra ele o $login, $senha ? Pronto, perdeu sua base de dados completa. Qualquer outra coisa, algo como, ele finaliza a query e poem a simples função unlink('arquivo.php'). Perdeu os arquivos também, o que sobrou do seu site? O diretório cgi-bin :P
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#13 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 23/07/2004, 15:16

Wow! :o

Caras entaum o negócio é proteger mesmo o code e restringir todo e qualquer tipo de caracters.....

Bem....eu uso todas as funções para tirar tags HTML de meu sistema de news e o addslashes para inserir dados no BD.... será que é necessário fazer mais alguma coisa?! (y) :huh:
######################
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "

#14 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 15:22

Quanto a segurança é bom trabalhar com o register_globals em OFF, não fazer permição 777 para as pastas que você irá enviar arquivos, mas sim envia-los por funções de ftp, e restringuir os tipos de arquivos que podem ser enviados. Já imaginou ele enviar um php com alguns funções "extras"?
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#15 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 23/07/2004, 15:26

Quanto a segurança é bom trabalhar com o register_globals em OFF, não fazer permição 777 para as pastas que você irá enviar arquivos, mas sim envia-los por funções de ftp, e restringuir os tipos de arquivos que podem ser enviados. Já imaginou ele enviar um php com alguns funções "extras"?

Cara nem pensar em register_globals ON.... isso é doidera.... :huh:

Agora me diga uma coisa....essas funções de tratamento de tagas seja elas qual forem.... seria interessante usa-las em UPDATE....de dados.....

Eu penso que seja..... e ai....!? :huh:
######################
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq