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);
}
答案 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~%.:_\-';
这些是您的应用程序在请求到达时允许的字符。