十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在PHP中修补XSS漏洞,我们可以使用三个PHP函数。
 这些函数主要用于清除HTML标志,这样就没办法注入代码了。使用更多的函数是htmlspecialchars() ,它可以将所有的"<"与">"符号转换成"<" 与">;"。其它可供选择的函数还有htmlentities(), 它可以用相应的字符实体(entities)替换掉所有想要替换掉的特征码(characters)。

PHP Code:
- // 这里的代码首要用于展现这两个函数之间输出的不一样
 - $input = '';
 - echo htmlspecialchars($input) . '
 - ';
 - echo htmlentities($input);
 - ?>
 - htmlentities()的另一个例子
 - PHP Code:
 - $str = "A 'quote' is bold";
 - echo htmlentities($str);
 - echo htmlentities($str, ENT_QUOTES);
 - ?>
 - ***个显示: A 'quote' is bold
 - 第二个显示:A 'quote' is bold
 - htmlspecialchars()运用实例
 - PHP Code:
 - $new = htmlspecialchars("Test", ENT_QUOTES);
 - echo $new;
 - ?>
 - 显示: Test
 - strip_tags()函数替代.删除一切的HTML元素(elements),除了须要特别准许的元素之外,如:, 或
 - .
 - strip_tags()运用实例
 - PHP Code:
 - $text = '
 - Test paragraph.
 - Other text';
 - echo strip_tags($text);
 - echo "\n";
 - // allow
 - echo strip_tags($text, '
 - ');
 - ?>
 
 现在我们至少已经知道有这些函数了,当我们发现我们的站点存在XSS漏洞时就可以使用这些代码了。我最近在我的站点上的GoogleBig(一个Mybb论坛的插件)视频部分发现了一个XSS漏洞,因此我就在想如何使用这些函数写段代码来修补这个搜索漏洞。
 首先我发现问题出在search.php这一文件上,现在让我们看看这个查询及输出查询结果中的部分代码研究一下:
PHP Code:
- function search($query, $page)
 - {
 - global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $module_url, $list_page_items, $hm_index;
 - $option = trim($option);
 - $query = trim($query);
 - $query = FixQuotes(nl2br(filter_text($query)));
 - $db->escape_string($query);
 - $db->escape_string($option);
 - alpha_search($query);
 - ...
 
在这种情况下,我们通过使用$query这一值作为变量,然后使用htmlentities()这一函数:
PHP Code:
- PHP Code:
 - $query = FixQuotes(nl2br(filter_text(htmlentities($query))));
 
如果你对这三种函数还有有疑问可以使用PHP手册来查看:
 http://it.php.net/htmlentities
 http://it2.php.net/htmlspecialchars
 http://it2.php.net/strip_tags