Comunidad de diseño web y desarrollo en internet online

Creando web con index.php?do=

Citar            
MensajeEscrito el 19 Feb 2011 08:25 pm
Bueno este tutorial o tema intentare tratar y mostrarles como funciona y como ahorrarnos codigo de diseño con lo que viene siendo ?do= utilizado en muchas web que facilitan trabajo y sobre todo codigo de diseño (por lo menos yo si), primeramente les explico, cuando vamos a una web vemos un diseño muy bien creado y eso, luego al darle click a otro boton cambiamos de seccion dentro de la misma web y el diseño sigue siendo el mismo solo cambio una parte de la web, esto lo pueden hacer de dos formas

1.- Copiando todo el codigo y asi mostrar la otra web, claro editando esa parte que quiera ser cambiada

2.- Con un include esta forma es la que les enseñare

Bueno si pasamos a hacer con un include solo basta con que en el index.php(comunmente es aqui), coloquemos un codigo como el siguiente

Código PHP :

if(!isset($_GET['do'])) {
$web = "index"; } else {
$web = $_GET['do'];
}
if(file_exists("modulos/$web.php")) {
include "modulos/$web.php";
} else {
echo "Zona En Construccion";
}


Con este codigo lo que hacemos es obtener lo que pongramos en el do, ejemplo
http://web/index.php?do=mensajes
Entonces como si se puso algo en el do, ahora buscamos en la carpeta modulos, y vemos por el archivo mensajes.php si existe lo agregara, sino mostrara un mensaje diciendo Zona en Construccion.

Con esto facilmente nos podemos ahorrar codigo y a la vez estamos seguros ante ataque ya que hacemos una verificacion de que sea por un archivo local el que buscamos y no remoto.

Aqui una web que utiliza este codigo:
https://gunz.herogamers.net/index.php

Bueno con esto queda terminado este tutorial, cualquier duda o queja pueden decirla, y si tienen sugerencias tambien.

Sayo*!

Por s00rk

9 de clabLevel



Genero:Masculino  

Programador Lector Curioso

firefox
Citar            
MensajeEscrito el 20 Feb 2011 06:42 am
s00rk, este tipo de código, aunque te parezca interesante, abre las puertas de una manera increíble a problemas de seguridad como Cross Site Scripting o inyección de código maligno.

Te recomienda que leas de este tema y aprendas más antes de usar cosas como estas en producción.

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

chrome
Citar            
MensajeEscrito el 20 Feb 2011 10:30 am
Bueno si eso tambien aunque ahi me falto hacer una referencia a una funcion que utilizo para lo mismo $web = $_GET['do']; en si en el codigo que utilizo es $web = clean($_GET['do']);

Donde la funcion viene siendo asi:

Código PHP :

function clean($value)
{
        $check = $value;

        $search = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
        'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
        'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
        'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
        'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
        'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
        'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
        'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
        'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
        'insert%20into', 'select%20', 'fopen', 'fwrite', '%20like', 'like%20',
        '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
        'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
        'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
        '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
        'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', 'lsof%20',
        '/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
        'file\://', 'window.open', '<script>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
        'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
        'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
        'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
        'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
        '<script', 'UPDATE', 'SELECT', 'DROP', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
        'select from', 'drop%20', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=');

        $value = str_replace($search, '', $value);

        $value = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$value);
        $value = trim($value);
        $value = strip_tags($value);
        $value = addslashes($value);
        $value = str_replace("'", "''", $value);

        if( $check != $value )
        {
            $logf = fopen("logs/injection.txt", "a+");
            fprintf($logf, "%s (module_%s.php) - [AID=%s] - Fecha: %s IP: %s Valor: %s, Corregido: %s\r\n", $_SERVER[PHP_SELF],$_GET['gunz'], $_SESSION['AID'],date("d-m-Y h:i:s A"), $_SERVER['REMOTE_ADDR'], $check, $value );
            fclose($logf);
         alertbox("Que intentas hacer? (: , Mejor mira esto xD", "/pff/No Click.htm");
         
        }

        return( $value );
}

if(!function_exists("alertbox")){
function alertbox($text, $url)
{
    echo "<body  bgcolor='#000000'><script>alert('$text');document.location = '$url'</script></body>";
    die("Javascript disabled");
} }


No se, pues he usado este codigo en un servidor que tuve con mas de 1000 usuarios y pensar que todo el tiempo estuve vulnerable a un ataque me hace sentir bastante mal por el mal manejo que lleve entonces . :/

Por s00rk

9 de clabLevel



Genero:Masculino  

Programador Lector Curioso

firefox

 

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