[theme-reviewers] Fwd: [WordPress Themes] #1596: THEME: Simply Works Core - 1.3.3
Chip Bennett
chip at chipbennett.net
Wed Oct 20 14:06:39 UTC 2010
All,
Please see Nacin's security review comments below.
Perhaps a good starting point for developing some security-related
Guidelines? (Note: this is mostly above my pay grade. I'll be in
watch-and-learn mode. But I definitely think we need some Theme-Review
guidance wrt security.)
And, thanks to Nacin for taking the time to perform the security review!
Chip
---------- Forwarded message ----------
From: WordPress Themes <theme-reviewers at lists.wordpress.org>
Date: Wed, Oct 20, 2010 at 8:53 AM
Subject: Re: [WordPress Themes] #1596: THEME: Simply Works Core - 1.3.3
To:
#1596: THEME: Simply Works Core - 1.3.3
--------------------------+-------------------------------------------------
Reporter: simplyworks | Owner: nacin
Type: theme | Status: assigned
Resolution: | Keywords: theme-simply-works-core,
--------------------------+-------------------------------------------------
Comment(by nacin):
In terms of security: Better than most, but still not great. Please read
http://codex.wordpress.org/Data_Validation.
- User input into text options fields are not being sanitized. Seeing a
lot of REQUEST on the same line as update_option. That's no good.
- check_admin_referer() isn't enough. You need current_user_can checks
there too.
- Seeing a lot of form fields whose data/values/names etc isn't being
escaped properly.
- bloginfo('name'); can't be used in the RSS feed title or any attribute,
as there are a few instances of it, without getting esc_attr(). Otherwise
it may escape out of the attribute.
- get_stylesheet_directory() exposes the path. You don't want that. You
want the URL.
Non-security notes:
- Custom header should be used instead of swc_logo.
- in index.php, you have an is_attachment() inside of an is_single().
That will never be true. single, page, and attachment are all mutually
exclusive. They do however all mean is_singular() == true.
- comment.php doesn't need the SCRIPT_FILENAME stuff.
- Not a fan of the direct query in list_most_commented(), or the non-
prefixed custom functions -- register_my_menus() isn't good enough IMO.
- In addition to the non-prefixed functions, there's for example a global
called "$options" in dashboard.php. That needs to be prefixed, or
preferably even not just sitting there as a global. Same with themename
and shortname -- avoid globals where possible.
- Some strings aren't translated. Many are also not translatable, and you
should instead use sprintf syntax instead of having dangling strings such
as "By: ". Also, avoid escaping in translated strings, it annoys
translators. Also, some strings such as "ADD COMMENT" should be "Add
Comment", then text-transform:uppercase via CSS. This is better for all
involved, including accessibility reasons.
- Don't delete options that store yes/no values. You're causing
unnecessary queries as then those values are not autoloaded. Instead,
store the literal value.
- add_theme_page() should not use `__FILE__`. Be more descriptive. Also,
edit_themes should be edit_theme_options. (Or switch_themes in pre-3.0.)
edit_themes controls *ONLY* the theme editor and may very well be denied
to everyone in many environments, like multisite.
- "The CSS, XHTML and design is released under GPL" -- and the PHP?
--
Ticket URL: <http://themes.trac.wordpress.org/ticket/1596#comment:3>
WordPress Themes <http://themes.trac.wordpress.org/>
WordPress.org Theme Directory Reviews
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wordpress.org/pipermail/theme-reviewers/attachments/20101020/e92db2d3/attachment.htm>
More information about the theme-reviewers
mailing list