CodeIgniter 403错误而不是删除坏数据

时间:2014-02-26 21:28:43

标签: php codeigniter xss codeigniter-2 http-status-code-403

CodeIgniter 2.1.4

在对CodeIgniter的XSS保护做了一些研究之后,我决定通过在CodeIgniter表单的任何输入字段中输入一些随机HTML来快速粗暴地测试它。

当我输入<script>时,页面将重定向到服务器的默认403错误(“禁止”)页面。它甚至不是CodeIgniter错误页面。

我很高兴任何包含<script>的输入数据都停止了,但是,我不明白为什么这会产生403错误页面而不是验证错误,或者至少传递数据与剥离的部分被剥离了。

我正在使用htmlentities()转换<>,但这没有任何区别。

如果实现表单验证,则无关紧要。即使没有它,<script>的输入数据也会产生403错误。

任何人都可以解释这里发生了什么,如果我需要担心这是如何处理/重定向的?对我来说,似乎我应该得到某种CodeIgniter验证错误或剥离数据而不是403错误。

这是我的一个控制器的简洁版本。 (它发生在具有数据输入字段的所有控制器上。)

public function search($search_slug = NULL)
{
    $this->load->library('form_validation');
    $this->form_validation->set_rules('search-terms', 'Search Terms', 'xss_clean');

    if ($this->input->post('search-terms') && ($this->form_validation->run() !== FALSE))
    {
        $search_slug = url_title(htmlentities($this->input->post('search-terms')), 'dash', FALSE);
    }

    if ($search_slug !== NULL)
    {

        $search_terms = preg_replace('/-/', ' ', $search_slug);

        $query = // get my results from model;

        if ($query['count'] > 0)
        {
            $data['results'] = $query['results'];       
        }
        else
        {
            $data['results'] = '<h3>Sorry, nothing found.</h3>';
        }
    }
    else
    {
        $data['results'] = '<h3>Please enter your search terms.</h3>';
    }

    $this->template->load('default', 'search', $data);
}

2 个答案:

答案 0 :(得分:0)

在阅读关于我的OP的评论并深入挖掘之后,这403重定向似乎与CodeIgniter没有任何关系。

此外,在同一帐户上安装ZenPhoto后,我也会在<script>进入ZenPhoto搜索框时看到403重定向。

由于它是共享主机,我无法100%确定地说,这是Apache保护自身的结果,但所有证据似乎都指向那里。

答案 1 :(得分:-1)

不允许使用此字符。 检查已接受的答案@ SO - characters allowed in a url

您的请求未达到index.php

除此之外,请查看application / config / config.php

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

这些是您的应用程序在请求到达时允许的字符。