Vulnerabilitat Cross Site Scripting a WordPress 2.0.1: modificació del pedaç

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.

Nota per als usuaris més rebuscats:
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ó 😉