【发布时间】:2013-02-17 14:17:01
【问题描述】:
我目前正在使用 CodeIgniter。我有 4 个表单(学生登录、登录表单、创建帐户和请求帐户)
我目前正在使用它来过滤我在其中一种表单上的输入(创建帐户):
function create()
{
$this->load->library('bcrypt');
$this->load->library('form_validation');
$this->form_validation->set_rules('fname', 'First Name', 'trim|required|alpha|max_length[14]');
$this->form_validation->set_rules('lname', 'Last Name', 'trim|required|alpha|max_length[14]');
$this->form_validation->set_rules('email', 'Email Address', 'trim|required|is_unique[users.email]|valid_email');
$this->form_validation->set_rules('username', 'Username', 'trim|is_unique[users.username]|required|alpha_numeric||min_length[4]|max_length[15]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[7]|alpha_dash|max_length[20]');
$this->form_validation->set_rules('passwordconf', 'Confirm Password', 'trim|required|min_length[7]|max_length[20]|matches[password]|alpha_dash');
if($this->form_validation->run() == FALSE)
{
$this->view();
}
据我了解,仅当用户数据将在表格、论坛、博客(等)中以 HTML 形式回显/输出时,才应使用 HTML Purifier。我对此的理解是否正确?我问是因为我的学生登录表单将用于将数据输入数据库。然后我的学生队列页面将用于 SELECT ... FROM ... 该数据库。所以这让我感到困惑,因为当我为学生队列创建输出时,数据将存储在数据库中。它不会直接发布。
所以我的思路是这样的:
- 验证数据以确保它符合您的预期
- 像我现在一样使用 xss_clean 过滤数据。
- 使用 PDO 准备查询将数据插入数据库
- (现在这一步让我感到困惑)我应该如何回显我的数据库数据? 在这一步我应该使用 HTML Purifier 吗?
很抱歉,如果这个问题已经被问了一百万次,我似乎无法找到我要找的东西。我没有完全理解 HTML 净化器的概念。
编辑 1:在配置文件中使用全局 xss_clean 过滤器。
【问题讨论】:
-
如果数据包含用户提交的HTML代码-是
-
对,它不应该有 html 或脚本。我只会允许 aplha_numberic 字符。
-
那你就不需要净化器了。只需filter 字段并确保它们仅包含 A-Z、0-9
标签: php codeigniter security xss