#1 Seguridad web
SEGURIDAD: NIVEL WEB.
Buenas.
Hoy vamos a ver qué cosas podemos hacer para proteger nuestros archivos de nuestra página web.
Voy a divirlo en varias secciones:
- Introducción
- ¿Cómo nos atacan?
- Archivos importantes a proteger
- Evitando ataques
- Despedida
1. Introducción:
Bueno, con esto quiero introducirlos en lo que es seguridad web.
Primero que nada, quiero que sepan que NUNCA podemos estar confiados en que nuestra página está a salvo.
Una vez aclarado eso, vamos a ir viendo cómo nos pueden atacar, archivos importantes que debemos proteger, los tipos de ataques más comunes y cómo protegernos de estos ataques.
2. ¿Cómo nos atacan?:
Hay varias formas de ataques, pero hoy vamos a enfocarnos en las principales y más comunes:
- Inyecciones SQL
- XSS
- RFI
- LFI
- DoS
3. Archivos importantes a proteger:
.htaccess y Php.ini son muy importantes para nosotros. Empecemos con .htaccess.
.htaccess es un archivo de texto oculto que contiene una serie de directivas para el servidor Apache. Cuando un cliente solicita un archivo al servidor, este busca desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado el archivo .htaccess y tiene en cuenta estas reglas antes de proceder con la petición, es decir, se aplican las normas especificadas al directorio en el que se encuentre .htaccess y los directorios por debajo de él.
Permitir acceso desde una única IP:
Código:
deny from all allow from (Direccion IP)
Denegar el acceso a una carpeta:
Código:
#deny all access deny from all
Evitar mostrar módulos y versión de Apache cuando la página mande un error:
Código:
ServerSignature Off
Query string, evitando inyecciones SQL, ataques XSS y demás:
Código:
RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*\.[A-Za-z0-9].* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
Evitar el robo de cookies:
Código:
RewriteCond %{HTTP_COOKIE} PHPSESSID=([^;]+) [NC]
RewriteRule ^(.*)$ - [env=sessid:%1]
Header set Set-Cookie "PHPSESSID=%{sessid}e; path=/; HttpOnly" env=sessid Evitar ataques RFI, LFI:
Código:
<php echo $var; ?>
Proteger carpetas con contraseñas:
Código:
AuthUserFile /rutacompleta/hacia/.htpasswd AuthName (acá podés poner lo que quieras) AuthType Basic require user (nombre del usuario)
Php.ini es el que contiene nuestra configuración de PHP, con el que podemos controlar muchos aspectos de su funcionamiento.
Allow_url_fopen (importante tenerlo desactivado para evitar ataques de RFI):
Código:
allow_url_fopen = off
Activar el Safe Mode:
Código:
safe_mode = On
Código:
register_globals = off
Bien, acá te recomiendo que si no tenés conocimientos, no sigas leyendo.
Una vez dicho lo anterior, vamos a proceder a evitar ataques XSS.
Cuando hablamos de ataques XSS, se nos viene a la memoria la palabra: "libros de visitas".
Bueno, para evitar esto, usaremos el siguiente script:
Código:
<php $Proteccion = strip_tags($_REQUEST['Comentario']; echo $Proteccion; ?>
Ahora vamos a los ataques SQL.
Ahora, usaremos el script:
Código:
SELECT nombre FROM (nuestro nick, nombre de usuario)
¡Prestar mucha atención con este!
Acá es MUY IMPORTANTE NO cometer errores de programación web.
Para evitar estos errores, usaremos este código 100% efectivo:
Código:
$url = intval($_GET['url']); (la variable URL sólo tendrá un valor entero) $archivo = “./documentos/cont”.$url.”.php”; (localización del archivo) if (file_exists($archivo)) include($archivo); (lo busca (al archivo), y si existe lo muestra
Con esto evitaremos que nos saquen información importantes, entre otras cosas:
Código:
<?php
$_GET['proteccion'] = str_replace(array('.','/','\\'),'',$_GET['proteccion']);
?> 5. Despedida:
Bueno, espero que les haya gustado y les sirva bastante. No me quise enfocar mucho en los ataques ya que lo que nos interesa en realidad es evitarlos.
Alguna información la saque de algunas páginas en internet, pero el tutorial y su contenido está hecho por mí.
Editado por HJT - 17.09.2009 13:30 hs.
1
. Espero que de verdad se haya entendido y les sirva
.