diff options
author | nikrou <nikrou@piwigo.org> | 2009-10-28 20:39:00 +0000 |
---|---|---|
committer | nikrou <nikrou@piwigo.org> | 2009-10-28 20:39:00 +0000 |
commit | 2696a1a75969ca48fb4fe9df3416e2cd692c8d97 (patch) | |
tree | 855dd2b571152c18a8f435d364b3856098b9164a /comments.php | |
parent | e0e12306cc67fdcf59d7544c2c59f6c6a333cbd3 (diff) |
merge from trunk
bug 1220 : fix XSS vulnerability.
filter on since parameter (is_numeric)
use only htmlspecialchars to filter vars to display
revert rev:3600 add left join on users table
Todo : use only left join on users table when a search by author is made
git-svn-id: http://piwigo.org/svn/branches/2.0@4140 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'comments.php')
-rw-r--r-- | comments.php | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/comments.php b/comments.php index a71838713..3380cedfa 100644 --- a/comments.php +++ b/comments.php @@ -59,7 +59,14 @@ $since_options = array( 'clause' => '1=1') // stupid but generic ); -$page['since'] = isset($_GET['since']) ? $_GET['since'] : 4; +if (!empty($_GET['since']) && is_numeric($_GET['since'])) +{ + $page['since'] = $_GET['since']; +} +else +{ + $page['since'] = 4; +} // on which field sorting // @@ -101,13 +108,13 @@ if (isset($_GET['cat']) and 0 != $_GET['cat']) } // search a particular author -if (isset($_GET['author']) and !empty($_GET['author'])) +if (!empty($_GET['author'])) { $page['where_clauses'][] = 'com.author = \''.$_GET['author'].'\''; } // search a substring among comments content -if (isset($_GET['keyword']) and !empty($_GET['keyword'])) +if (!empty($_GET['keyword'])) { $page['where_clauses'][] = '('. @@ -180,8 +187,8 @@ $template->set_filenames(array('comments'=>'comments.tpl')); $template->assign( array( 'F_ACTION'=>PHPWG_ROOT_PATH.'comments.php', - 'F_KEYWORD'=>@htmlspecialchars(stripslashes($_GET['keyword'])), - 'F_AUTHOR'=>@htmlspecialchars(stripslashes($_GET['author'])), + 'F_KEYWORD'=> @htmlspecialchars($_GET['keyword'], ENT_QUOTES, 'utf-8'), + 'F_AUTHOR'=> @htmlspecialchars($_GET['author'], ENT_QUOTES, 'utf-8'), ) ); @@ -252,8 +259,10 @@ else $query = ' SELECT COUNT(DISTINCT(id)) FROM '.IMAGE_CATEGORY_TABLE.' AS ic - INNER JOIN '.COMMENTS_TABLE.' AS com + INNER JOIN '.COMMENTS_TABLE.' AS com ON ic.image_id = com.image_id + LEFT JOIN '.USERS_TABLE.' As u + ON u.'.$conf['user_fields']['id'].' = com.author_id WHERE '.implode(' AND ', $page['where_clauses']).' ;'; @@ -290,6 +299,8 @@ SELECT com.id AS comment_id FROM '.IMAGE_CATEGORY_TABLE.' AS ic INNER JOIN '.COMMENTS_TABLE.' AS com ON ic.image_id = com.image_id + LEFT JOIN '.USERS_TABLE.' As u + ON u.'.$conf['user_fields']['id'].' = com.author_id WHERE '.implode(' AND ', $page['where_clauses']).' GROUP BY comment_id |