Comunidad de diseño web y desarrollo en internet online

Seguridad en comentarios

Citar            
MensajeEscrito el 09 Ene 2009 12:48 pm
Hola, alguien me puede decir si el siguiente script sería seguro?

Código :

$a=$_POST['autor']);//llegarian los datos del formulario
$c=$_POST['comentario']);
$u=$_POST['url']);

$a = str_replace("<","&lt;",$vcomment);//Y aqui los repasaria
$a= str_replace(">","&gt;",$vcomment);
$a= str_replace("|","",$vcomment);
$a= str_replace("\"","&quot;",$vcomment);
$a= str_replace("'","\'",$vcomment);

$c = str_replace("<","&lt;",$vcomment);
$c= str_replace(">","&gt;",$vcomment);
$c= str_replace("|","",$vcomment);
$c= str_replace("\"","&quot;",$vcomment);
$c= str_replace("'","\'",$vcomment);

$u= str_replace("\"","&quot;",$vcomment);
$u= str_replace("'","\'",$vcomment);
$u= str_replace("<","",$vurl);
$u= str_replace(">","",$vurl);
$u= str_replace("|","",$vurl);//Despues de esto se haría la inserción a la base de datos mysql


Llevo rato buscando pero todo lo que encuentro reemplaza los signos a /// o no pone nada y lo que quiero es que al meter un comentario las dobles comillas sigan viendose pero sin miedo a que me hackeen.


Gracias de antebrazo ^^ .

Por carlos17

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ene 2009 03:27 pm
No sería mas fácil?

Código PHP :

$c= htmlentities( $_POST['comentario']) );

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 09 Ene 2009 04:22 pm
Gracias, al principio puse esa misma pero como no se hacer sql injection pues no sabía si servia xD

Gracias por la ayuda y por todos tus posts que ya he leido varios tuyos.

Por carlos17

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ene 2009 08:09 pm
Para prevenir el SQL Injection, es suficiente controlar el valor de las comillas que utilizas dentro de tu sentencia SQL.

Por ejemplo, una inyección sql es esto:

Código PHP :

$variable = " '; drop una_tabla; select 1 WHERE 'a ' = 'a ";
UPDATE algo FROM tabla WHERE a = '$variable';


Eso produciría este SQL;

Código :

UPDATE algo FROM tabla WHERE a = ' '; drop una_tabla; select 1 WHERE 'a ' = 'a ';


Así un usuario no autorizado podría borrar la tabla llamada "una_tabla".

Para prevenir eso, las nuevas configuraciones ya nos hacen casi todo el trabajo, ya que por default en la configuración, escapan las comillas dobles y simples cuando se reciben en un request(ya sea por POST o GET).

Adicionalmente a las variables que recibes, si quieres mas seguridad y que te asigne la codificación actual de la DB, utiliza esto.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 10 Ene 2009 03:01 am
Yo creo que no solo se deberian controlar las comillas simples y dobles, tambien deberian controlar ciertos caracteres especiales, ya que si la consulta es más compleja habría que meter más que una comilla simple para completarla, podrían ser caracteres como el porcentaje (%) por si se intenta juakear una consulta que tenga LIKE y los paréntesis por si hay que completarlos, etc...

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

msie7
Citar            
MensajeEscrito el 10 Ene 2009 01:34 pm
Hola de nuevo, en un insert con htmlentities con ENT_QUOTES llegaría para proteger la base de datos?

Adicionalmente a las variables que recibes, si quieres mas seguridad y que te asigne la codificación actual de la DB, utiliza esto.
¿Mas seguridad? Como me podrían "atacar" o poner html si tengo htmlentities y reemplazo < y > en autor, url y comentario?

Por carlos17

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Ene 2009 06:55 pm
yo no aceptaria nada q pareciese html tags de php o cualquier otra cosa q parezca programacion puedes tambien pasarle un bbcode con este podras formatear todo el texto previniendo la ejecuion del mismo saludos y averigua algo sobre prevenir ataques XSS

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 22 Abr 2009 07:30 pm
Buenas, tengo la misma duda que la otra vez pero de esta lo que quiero es permitir cualquier lenguaje en el nombre de usuario (El usuario podria llamarse "<name>", "[咳", "viêt", "[{(caña)}]", etc.) sin que la base de datos corra riesgo

Solo lo quiero para insertar el nick en la base de datos (y las respectivas consultas).

$nick2=str_replace(" ","*",trim($nick));
if(nick!=nick2)$erro.='Evita poner espacios al inicio o final de tu nick, asi como espacios seguidos.<br />';
$nick2=str_replace("\"","*",$nick);
$nick2=str_replace("'","*",$nick2);
$nick2=str_replace("%","*",$nick2);
if(nick!=nick2)$erro.='Tu nombre contiene carateres no permitidos.<br />';

Luego, con php pondría la función que dio Dano (htmlentities();) para mostrar el nick y evitar XSSs. Con esto bastaría? gracias.

Además tengo otra duda ¿Cómo hago para que en la base de datos me salgan símbolos chineses? Creo que es en cotejamiento, pero no se cual opcion debo poner


Gracias de nuevo!

Por carlos17

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2009 07:47 pm
seee pero ni idea ahora como dijo dano con solo validar las comillas simples y dobles tendras seguridad

Por talcual

686 de clabLevel



 

Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.