Thanks andreibexa, but the escape of the fields is made some lines later by $wpdb->insert.
For everybody, here you are the vulnerability report sent to me:
we’ve found a Cross Site Scripting Bug in the alo-easymail Plugin
(http://wordpress.org/extend/plugins/alo-easymail/).
The flaw exists in the Newsletter Widget.
When the form is submitted without ajax using the normal form (ie by
disabling Javascript), the output of the parameters
alo_em_opt_name
alo_em_opt_email
are not encoded.
Sample Request:
POST / HTTP/1.1
[...]
alo_em_opt_name=%3casdf%3e&alo_em_opt_email=%3casdf%3e&submit=Abonnieren
Here the tags are written directly into the HTML Source Code.
When using the Ajax method, you can also insert HTML Tags
(Example response:
document.getElementById(‘alo_easymail_widget_feedback’).innerHTML =
‘
‘).
I have not checked the Text Parameters (alo_em_error_on_sending,
alo_em_error_email_activated, …) because i can not cause errors that
output these messages, but these Parameters should also be checked.
So into the coming version 2.4.4 I added these fixes:
1 - about the for submitted without javascript/ajax, I added this code in an action in a 'init' hook:
if ( !defined('DOING_AJAX') || ! DOING_AJAX )
{
if ( isset($_POST['alo_em_opt_name']) ) unset($_POST['alo_em_opt_name']);
if ( isset($_POST['alo_em_opt_email']) ) unset($_POST['alo_em_opt_email']);
// we do not unset 'submit' because its common name,
// so it could be maybe used by other plugins: only a safe escape
if ( isset($_POST['submit']) ) esc_sql($_POST['submit']);
}
2 - about all the txt messages printed in javascript (alo_em_error_on_sending, alo_em_error_email_activated...) now all of them are escaped with esc_js/esc_sql.
You can see the changes in coming version 2.4.4 in this page on WP trac.