Evita, con PHP, ataques XSS y SQL injection

Una de las cosas que normalmente no revisamos cuando creamos un sitio web es la vulnerabilidad que se tiene a ataques por URL por cosas como XSS e incluso a ataques a la base de datos por una mala configuración. Para esto normalmente se usa una revisión y se ejecuta, con PHP, la función htmlentities() que, gracias a eliminar el código HTML puede filtrar cosas como los <script>. Para solventar esto existe una cosa llamada Genius Open Source Libraries que, con unas simples funciones, permiten hacer una megalimpieza contra ataques de todo tipo.


require_once 'Core/sgConfig.inc.php';
// Output an unsafe string, presumably user input
$xss = '<script>alert(\'oh snap\');</script>';
echo 'If your entered your name as ' . $xss . ', we\'d be in trouble.<br>' . "\n";
// Sanitize that string, and output it safely
$htmlContentContext = sgSanitizer::sanitizeForHTMLContent($xss);
echo "But if we sanitize your name, " . $htmlContentContext . ", then all is well.<br>\n";
echo '<h2>HTML Attribute</h2>';
// We can also safely sanitize it for an HTML attribute context
$htmlAttributeContext = sgSanitizer::sanitizeForHTMLAttribute($xss);
echo 'Tainted strings can also be used in an <a href="http://google.com" title="' . $htmlAttributeContext . '">HTML attribute</a> context.<br>' . "\n";
echo '<h2>JavaScript string</h2>';
// And we can even make strings used in JavaScript safe
$jsString = '\';alert(1);var b =\'';
echo '<script type="text/javascript">
var a = \'' . $jsString . '\';
var aSafe = \'' . sgSanitizer::sanitizeForJS($jsString) . '\';
</script>';

En este sistema de limpieza descargable como proyecto Genius encontramos algunas funciones como sanitizeForHTMLContent (que limpia el contenido teniendo en cuenta que es código HTML), sanitizeForHTMLAttribute (que limpia como atributo de HTML, por ejemplo el “alt” de una imagen) o sanitizeForJS (que dejaría el código arreglado para poder ejecutarse como JavaScript).

Sin duda una biblioteca de funciones interesante a la hora de aumentar la seguridad de un sitio web.

2 comentarios en “Evita, con PHP, ataques XSS y SQL injection”

Deja un comentario