Problema con sistema de login de usuarios

Y qué tal si lo vamos depurando acá? y cuando este listo lo pasamos a lecciones de cctw?

Para evitar esos ataques hay que validar los datos recibidos. Investigamos?
Vale, porque por el momento me he intentado "autohackear" y sí, es muy vulnerable jejeje
Je je je je, pues eso, abrimos este tema de investigación para ponernos las pilas! Seguridad en aplicaciones php!

Creo que pronto tendremos contenido para otra lección de CCTW, je je je
Para hackearnos una web, es muy útil (para el cracker) saber de antemano cuál es nuestro sistema, qué características tiene nuestro servidor, o mejor dicho, qué software tiene. Versiones del sistema operativo, por ejemplo. Así, si sabe nuestra versión y conoce las fallas del mismo, ya sabe por donde entrar.

Para saber cuál es la versión de nuestro php, de nuestro sistema operativo, etc, basta con provocar un error en nuestras páginas. Por ejemplo, escribiendo http: // www . comocreartuweb.com/noexistes. xfg

Como no existe tal archivo, el servidor muestra una página de error, en la que.... mira por donde, aparece toda esa información.

Para evitar esto, podemos enviar al navegador a nuestras propias página de error, en la que pondremos lo que nos de la gana. Por ejemplo "Esa página a la que intentas acceder no existe. Ve mejor a www.comocreartuweb.com".

Cómo se hace esto? Primero creas una página normal, con el texto de arriba, por ejemplo. No necesitas que sea bonita, ni que tenga estilos, ni nada, solo ese mensaje. Imagina que la llamamos error.html

Ahora en tu .htaccess escribes esto:

ErrorDocument 401 /error.html
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
y listo, en lugar de la página de error con esos datos delicados, aparece otra, la que hemos hecho. Puedes añadir a esa frase inicial el tipo de error al que corresponde cada página, si quieres, de este modo:

ErrorDocument 401 /error401.html
ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html
y creando claro, 3 páginas, en cada una de las cuales se indica el tipo de error.

Esto era para romper el hielo! je je je.
Pues por lo visto es tan simple como añador esto:

$name=htmlspecialchars($_POST['name']);
$pass=htmlspecialchars($_POST['pass']);
$conexion=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error.");
mysql_select_db($dbname,$conexion) or die("Error.");
mysql_query("select * from users where name='".mysql_real_escape_string($name)."',$conexi on) or die("Error");

y sobra para evitar vulenerabilidades.
Lo que hace el es convertir algunas etiquetas html (introducidas manualmente por cualquiera en la url de una web) en otros simbolos no dañinos.


  • '&' (ampersand) se convierte en '&'
  • '"' (comillas dobles) se convierten en '"' si no está activo ENT_NOQUOTES.
  • ''' (comilla simple) se convierte en ''' si está activo ENT_QUOTES.
  • '<' (menor que) se convierte en '&lt;'
  • '>' (mayor que) se convierte en '&gt;'
Jorgens, en mi web tengo una página llamada 404.shtml que actúa como página de error 404 (pág no encontrada), pero no modifiqué ningún htaccess, es una opción que tienes desde el cPanel jejeje
Victor, aún poniendo eso ese formulario sería vulnerable

Lo que hay que hacer es desactivar magic quotes si mal no recuerdo
@set_magic_quotes_runtime(0);

Si me equivoco corregidme, no vaya a decir cosas mal y os líe jejeje
Si, todo lo que se puede indicar en el htaccess, se puede colocar directamente en el servidor, en un archivo de configuración del mismo. Lo que se logre colocar allí no hace falta colocarlo en el htaccess. El cpanel te permite colocar esas instrucciones directamente en ese archivo de configuración y por eso no tienes nada en el htaccess.

Espero hablar del htaccess pronto en CCTW. Joe, cuantas cosas por explicar, ja ja ja ja

Creo que en este hilo podremos aprender bastante ;=)
Hola,

Tenia tiempo sin leerte por aqui jorgens, que bien que ya atiendas mejor el foro :D
Bueno yo regresando por aca, ya estoy de vacaciones, volvere a ayudar en esto que es mi fuerte (php y mysql).
Y bueno este tema creo que ya lo han resuelto , pero aportare algo que es muy bueno para evitar las inyecciones sql, y como creo que todo ya lo han dicho solo profundizare un poco. En el caso de que se usen variables por url (GET) o por Post. es bueno combinar las ENT_QUOTES, junto con los htmlspecialchars . Aqui una manera facil de lograrlo:
$codigo1 = (int)$_GET['']; //en el caso de que sea solo numero lo que exista en la variable, si tambien existen letras quitamos el (int)
$codigo1 = htmlspecialchars($codigo1);
$codigo1 = htmlspecialchars($codigo1,ENT_QUOTES);
De esta forma tenemos librado las inyecciones, de una manera muy eficaz. Recordando que aun es vulnerable pero se reduce menos la posibilidad de ser 'crackeado' . Recordando para los usuarios que no saben, que un "HACKER" no es una persona mala como ustedes lo conocen (la mayoria). Un hacker es aquel experto en informatica y aunque sabe destruir no lo hace, y en caso de hacerlo lo hace para bien, aqui la palabra buscada es cracker que es un experto informatico "criminal", "malo" y utiliza sus conocimientos para destruir webs o hacer daños :(
La otra forma de proteccion es por el .htacces usando el famoso y eficaz "ModRewrite" de apache, y esto para convertir nuestros .php a .html y que esten en "carpetas" inexistentes, pero que sin embargo existan , a lo que me refiero:
Tienes tu archivo .php en una cierta direccion , ejemplo : midireccion.com/index.php?categoria=donaciones
el mod rewrite de apache lo sustituiria por : midireccion.com/index/categoria/donaciones.html ¿Acaso no es genial?
No solo para evitar el "CRACKEO" si no tambien ayuda en demasia para el posicionamiento "SEO",
La otra gran variable del .htacces que tenemos es el "RewriteCond" esto sirve para impedir ataques como : sql, xss , etc.
Tambien tenemos la opcion de errores como "404", "403" ... Esto nos permite tener nuestros errores personalizados , esto funciona para no tener los famosos "oyos de seguridad" . Y tambien como alternativa a hosting gratuitos que en los errores, te mandan a su publicidad, creo que la gran mayoria hace eso y con esto puede evitar eso tambien.
Y por ultimo tenemos la opcion de evitar los famosos ataques "DDoS" , que son ataques de denegacion de servicio. Y es utilizado para sobrecargar el servidor gastando la transferencia, y como esta es limitada hasta en hosting de paga, te cierran la cuenta y te ponen el error 500 "Internal server error" , y ya no puedes hacer nada :( . Para evitar esto tenemos el "LimitRequestBody" para limitar la transferencia en caso de que esto suceda.
un ejemplo de hacer todo esto antes mencionado en el .htacces es :

## Manejo de errores de Apache. Cuando se produzca uno de estos errores, redirigimos a una pagina especial desarrollada por nosotros.
ErrorDocument 401 /error401.html
ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Options +FollowSymLinks
# Evitar escaneos y cualquier intento de manipulación malintencionada
# de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteCond %{HTTP_USER_AGENT} ^(-|\.|')
RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python|nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach)(.*) [NC,OR]

RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR]
RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*)

## Evitar que se liste el contenido de los directorios (que no aparezcan)
Options All -Indexes
## Lo mismo que lo anterior
IndexIgnore *
# Protegerse contra los ataques DOS limitando el tamaño de subida de archivos
LimitRequestBody 10240000

#Cambiar a url amigable el ejemplo anterior visto
RewriteRule ^index/categoria/donaciones/$ index.php?categoria=donaciones [QSA,L]


Y con esto tenemos nuestro .htacces haciendo una superfuncionalidad y sacarle mas provecho a nuestro sitio en todos los sentidos, mas rapido , mas seguro , y con mejor posicionamiento SEO.

Se los dejo porque ustedes me han dado mucho , y si no hubiera conocido esta web probablemente, no sabria lo que se ahora, Asi que quiero compartirselos para que tengan un mejor sitio y para que despues vuelvan aca a CCTW a ayudar a los nuevos.

Un saludo
Es facil programar "Solo interesate en aprender"
un "HACKER" no es una persona mala como ustedes lo conocen (la mayoria). Un hacker es aquel experto en informatica y aunque sabe destruir no lo hace, y en caso de hacerlo lo hace para bien, aqui la palabra buscada es cracker que es un experto informatico "criminal", "malo" y utiliza sus conocimientos para destruir webs o hacer daños :(

Por fin, una persona que no confunde los términos!
Por cierto, bienvenido de nuevo jejeje

Muchísimas gracias por el aporte, unos puntitos para ti jejeje
Eso sí, los DDoS sólo os lo harán (supongo) si la página tiene mucho éxito, pues dependiendo de los servidores se necesitarían muchas personas haciendo transferencias al mismo tiempo... pero alomejor se reúnen una banda de lammers y te quedas sin página, quién sabe jejeje

Ah, un consejo por si tenéis un sistema de login: Cuando una IP falle varias veces al intentar loguearse (5 por ejemplo) que no pueda probar a loguearse de nuevo hasta dentro de algún tiempo. Por qué? Porque puede usar un programa de "fuerza bruta" que es un programa que se basa en diccionarios para probar y probar contraseñas hasta dar con la correcta, así los evitaremos jeje
Claro claro, pero bueno eso ya no tendria que ver con el .htacces, basta con un captcha , para evitar ese tipo de spiders o robots contra la web. :D
En cuanto a los ataques DDoS , no es lo mismo mucha actividad de usuarios a un ataque DDoS , porque ahi evita la transferencia en exceso por parte de un solo usuario, dependiendo si el ataque sea UDP o TCP , la transferencia es por paquetes de kilobytes, esto genera una transferencia ilimitada, sin que se cierre una conexion, y hace que el servivdor se sature, esto evita que haya conexion ilimitada por parte de un usuario y hace que actue de manera normal, en el caso de flood HTTP , funcionaria de igual manera.

Saludos
Es facil programar "Solo interesate en aprender"
Ah por cierto, recomiendo que no uséis como servidor un Windows 97/98 jajajajaja
hahaha , lo bueno que esos no existen porque yo queria uno de esos xD
Es facil programar "Solo interesate en aprender"
Hey muchas gracias Cesar. Como siempre, es un placer leerte y tenerte entre nosotros.

Por cierto, te importaría decirme cómo aprendo lo siguiente? He leido que usar aunque sea un solo htaccess obliga al servidor a buscar ese mismo archivo en cada una de las carpetas de la web, por si existe alguno que deba "sobreescribir" alguna de las reglas indicadas en el htaccess de la raiz. Y es por eso que algunos recomiendan no usarlo (si se puede evitar) para liberar un poco al servidor.

Bien. Creo que como alternativa, podemos cargar todo el contenido del htaccess en un archivo de configuración del servidor, de modo que al reiniciarlo, ya conoce esas reglas y no necesitamos añadirle nada con htaccess, pudiendo entonces eliminarlos y liberar así al server de ese trabajillo.

Es del todo cierto? Qué archivo es ese? Sabes de algún sitio donde pueda profundizar? No se ni cómo buscar información de esto. Te estaría, de nuevo, muy agradecido!

Ahí van 10 puntitos compañero, je je je
Bueno primeramente
no es obligado tal cual, si no que , dependiendo de los parametros que le hayas especificado , lo hara, en el caso de que utilizes ModRewrite, para generar carpetas inexistentes , ejemplo:

index.php?mode=vercategoria

con el ModRewrite

index/mode/vercategoria.html

si haces crear esas carpetas, solamente se quedaran ahi, y si creas una carpeta existente y le nombras "index" , esta carpeta se mostrara, por que primeramente el servidor lee el .htacces, dependiendo de la accion que realize el usuario, entonces confirmamos que es incierto que obliga a todo el servidor a buscar mas .htaccess, su funcion va de la mano con las peticiones del usuario, en fin si se utilizaria mucho el servidor porque aun asi son muchas peticiones del usuario, si el usuario mira 10 paginas de nuestra web , estamos hablando de 10 interacciones con el servidor, ahora imaginemos ¿Que pasaria si el .htaccess cargara todas nuestras carpetas por cada peticion?
Imaginemos que tenemos 10 carpetas en nuestro servidor, y el usuario mira 10 paginas, entonces estamos hablando que el servidor busca en 10 carpetas por cada peticion estamos hablando de 100 interacciones con el servidor, ahora imaginemos que tenemos 1000 usuarios diarios y estos miran las mismas 10 paginas, estamos hablando de 1 000 000 de interacciones por esos usuarios, ahora ¿Que pasa si tenemos 10 000 visitas diarias y los usuarios miran 100 paginas? Vaya! nuestro servidor se saturaria, ¿No crees que cctw ya se hubiera caido desde hace tiempo ? bueno eso no lo queremos jeje. El servidor esta encendido con apache, entonces ¿Cual es la diferencia de un archivo php con un html? . La respuesta es sencilla , html es estatico y php es dinamico , esto quiere decir que hay interaccion primeramente con el servidor, que bien nos acercamos cada vez mas a la respuesta, el archivo php entonces genera miles de peticiones con el servidor, ya que el usuario las genera junto con otros miles, entonces quiere decir que el servidor esta preparado para eso. Ahora bien imagina el .htaccess como htacces.php !lo hemos encontrado!. El .htaccess al igual que los archivos php interactua con el servidor debido al usuario, la unica diferencia es que este se ejecuta primero , apache lo busca primero antes que cualquier otro archivo php, si no lo encuentra procede a la ejecucion normal, el .htaccess viene siendo como una incorporacion externa por parte del webmaster , modificable para el en cualquier momento sin necesidad de meterse a todo el rollo interno de apache que gran herramienta tenemos ¿no? . En cuanto a que si se pude configurar desde un archivo de configuracion del servidor, claro que si se puede, esto podria ser desde el php.ini que es el archivo de configuracion por defecto del servidor apache, pero vaya esto tiene aproximadamente unas 2,000 lineas de configuracion y la verdad no se por donde empezar a configurar.
En fin, la pregunta:
¿Es recomendable utilizar .htaccess?
Si completamente.
¿El .htaccess relentiza el servidor sobrecargandolo?
De cierta manera, genera mas peticiones como cualquier otro archivo php de una manera un tanto elevada a comparacion de un solo archivo.
¿Es mejor desactivar o no tener .htaccess para mejor el rendimiento y/o optimizacion del servidor?
No, para ello hay una mejor solucion y utilizada por muchos webmasters, Como lo es la creacion de un sistema de cache , optimizando el rendimiento del servidor en un 30% a 80% dependiendo de los archivos optimizados.

Bueno jorgens, Hasta aqui creo que eso es todo, cualquier duda no dudeis en decirmelo.

Un saludo
Es facil programar "Solo interesate en aprender"
Genial aporte Cesar. Me aclara algunos conceptos.

Tengo un cms hecho por mi, con php y mysql que no me atrevo a usar aún hasta estar seguro en la seguridad, valga la reBurrancia, je je je. Lo que hago es algo como lo que comentas del caché, pero a lo bestia. Tengo un "motor" que crea las páginas a partir de base de datos y php, pero en lugar de crearlas cuando las visitas, crea los archivos con extensión html, y es eso lo que copio y pego en el servidor, archivos html puros. Sigue siendo un cms, pero el resultado no es lo que muestra a los visitantes, me lo muestra solo a mí y yo copio esos archivos resultantes y los subo al servidor. Funciona, es algo cutre el planteamiento, pero sigue siendo casi igual de rápido para mi y libero al servidor de deducir cada página en cada una de las visitas. Novato que es uno, je je je

Gracias de nuevo!
Hola,

ya veo, yo he hecho uno muy similar al de phpBB3 y al que usan muchos otros scripts, esto es facil si tiens la idea de como hacerlo, y bien para crear este cahce por cierto muy potente y util , es necesario crear plantillas con extension .html, y dentro de estas poner el contenido del diseño etc. Y en donde sea necesario llevar cosillas php , basta con poner llaves con la funcion a actualizar al momento de crear el cache , un ejemplo seria :

cabecera.html
<html>
<head>
<title>{titulo}</title>
</head>
Posteriormente desde php basta con usar funciones f , como fopen, fwrite, fgets , fclose, y la funcion str_replace,
y harias esto acontinuacion : desde un archivo sea cache.php se ingresa lo siguiente :
fopen(estilo/html/cabecera.html) , obtienes los datos con el fgets, y despues con str_replace , reemplazas el {titulo} por alguna otra variable o un simple string,
creamos el cache en caso de que no exista, esto es muy simple solo verificamos que exista el directorio y el archivo con file_exists , posteriormente si no existen, creas la carpeta con la funcion mkdir, y aqui la clave del funcionamiento si el cabecera.html se obtiene asi:
<html>
<head>
<title>{titulo}</title>
</head>
Y al reemplazar texto quedaria asi:
<html>
<head>
<title><?php mititulo(); ?></title>
</head>
Pero ojo , no modificamos el archivo cabecera.html, este texto es almacenado en una variable, y se modificara el archivo con la funcion copy(); copiamos cabecera.html a la carpeta cache previamente creada, pero el archivo lo guardamos como cabecera.html.php , despues le ingresamos el contenido modificado y Woooala!. cache creado correctamente :D
Esto tambien sirve para crear temas , o modificar estilos sin tener que ingresar o modificar entre codigo php , genial no?
Como ves es algo muy facil , siempre y cuando se tengan las ideas y demas, en mi caso yo lo cree asi y va de maravilla xD . Aunque aun no lo utilizo en sitios , aun no tengo uno xD. Pero es un muy buen script.

Un saludo jorgens y suerte con el cms.
Es facil programar "Solo interesate en aprender"
hahah
cierto no lo revise, un error de dedo que fue copiado jaja ;S


Saludos
Es facil programar "Solo interesate en aprender"