【发布时间】:2014-02-26 21:28:42
【问题描述】:
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);
}
【问题讨论】:
-
为什么你会对尝试探索 XSS 的人好?我认为一个丑陋的 403 就足够了。
-
@enapupe,我不是想对黑客好...我想了解正在发生的事情并确保我的代码足够安全。
-
好的。你确定这是 CI 安全类工作吗?开机后就开始了?不是网络服务器吗?我是 CI 用户,从未见过这种行为..
-
@enapupe,如果我确定这一点,我就不会在这里问了。什么时候开始的,我不知道,因为我以前从未尝试过。
-
XSS 不会显示 403 错误,它只是清理您的输入并放入
[removed]瞬间的<script>或任何已删除的内容。并且 403 是访问禁止问题不是 XXS 干净
标签: php codeigniter xss codeigniter-2 http-status-code-403