如何在php codeigniter中避免xss攻击

时间:2013-11-26 12:35:38

标签: php codeigniter xss

我对网络开发比较陌生。就在今天,我的老师告诉我实现一种方法来避免在我的项目中使用跨服务器脚本。我搜索了很多,发现了xss_clean,但我不确定如何使用和实现它。任何与此相关的指南或文章都是受欢迎的。或者如果你想在这里解释那将节省我很多额外的努力工作,我将非常感谢你。我正在使用CodeIgniter框架,所以请与此相关的任何文章都是好的。

5 个答案:

答案 0 :(得分:2)

XSS漏洞的问题在于您不能只应用一个修复。这些漏洞可能发生在你写的每件小事上。

当攻击者能够将HTML注入您网站访问者的页面时,就会发生XSS。根据该代码的不同,他可以将访问者发送到他的网络钓鱼网站或窃取他的会话。

不难想象如何阻止HTML注入:您只需HTML转义所有用户输入。但实际上可能存在相当多的问题,而且您的系统只能像最薄弱的环节一样安全。

答案 1 :(得分:1)

根据我的经验,CI的XSS相当不错 - 我遇到了一些情况,它确实删除了我想要的东西,如果你不期望它可能会很难调试。我从来没有“轻易”绕过它,也没有读过任何漏洞(CI社区相当大)。

有关详细信息,请查看以下可能对您有所帮助的链接 http://blog.astrumfutura.com/2011/05/codeigniter-2-0-2-cross-site-scripting-xss-fixes-and-recommendations/

另请阅读https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

http://htmlpurifier.org/

答案 2 :(得分:0)

要删除xss攻击,您可以执行以下操作:

  1. 您需要从scriptpost值中删除不需要的标记,例如“get”。
  2. meta-characterspost值中删除get

答案 3 :(得分:0)

一个非常简短的答案使用以下代码行,您可以在其中提交详细信息,这些详细信息会在您的控制器文件中进行。

$data = $this->security->xss_clean($data);

如果您有多个记录,这里的数据可能是您的单个值或数组。

查询的另外一个插件。使用以下内容来防止 sql 注入

$username = $this->input->post('username');
$query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
$this->db->escape($email);
$this->db->query($query);

答案 4 :(得分:0)

我已实现此功能以防止 XSS 攻击:

public static function protectArrayAgainstXSS(&$arr) {
    $changed = false;
    foreach ($arr as $index => $a) {
        if (is_array($a)) {
            $changed = $changed || Common::protectArrayAgainstXSS($arr[$index]);
        } else if ($a !== null) {
            $changed = $changed || ($arr[$index] === strip_tags($a));
            $arr[$index] = strip_tags($a);
        }
    }
    return !$changed;
}