Aquest matí em feia ressó d’una vulnerabilitat de Cross Site Scripting que afecta a WordPress 2.0.1, després d’aplicar la solució temporal que donen a [N]eo [S]ecurity [T]eam he detectat que els comentaris es codificaven de forma incorrecta, donant un cop d’ull a la funció htmlentities de PHP és fàcil concloure que el pedaç només és correcte per algunes codificacions.
En el meu cas, que codifico el bloc en UTF-8, el pedaç no funciona. Per adaptar-lo a la codificació del nostre bloc podem fer el que segueix:
Modificar les línies 21 i posteriors de l’arxui wp-comments-post.php
per:
[...] $comment_author = htmlentities(trim($_POST['author']),ENT_COMPAT,get_option('blog_charset')); $comment_author_email = htmlentities(trim($_POST['email']),ENT_COMPAT,get_option('blog_charset')); $comment_author_url= htmlentities(trim($_POST['url']),ENT_COMPAT,get_option('blog_charset')); $comment_content = htmlentities(trim($_POST['comment']),ENT_COMPAT,get_option('blog_charset')); [...]
Aplicant aquesta modificació al pedaç original, el htmlentities
agafarà la codificació del nostre bloc com a codificació correcta.
htmlentities
només funciona amb les següents codificacions: ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, KOI8-R, BIG5, GB2312, BIG5-HKSCS, Shift_JIS, EUC-J. Si empreu alguna altra codificació… haureu de buscar una altra solució 😉