我目前使用CodeIgniter。我有4种形式(学生登入,登录形式,创建账户,并要求帐户)理解HTML净化器
我目前使用这个目前以过滤的一种形式我输入(创建账户):
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时使用。我的理解是否正确?我在问,因为我的学生登录表单将用于将数据输入到数据库中。然后我的学生队列页面将被用于SELECT ... FROM ...那个数据库。所以这让我感到困惑,因为当我为学生队列创建输出时,数据将被安置在数据库中。它不会直接发布。
所以反过来我的思路去如下:
- 验证数据并确保它是你所期望的
- 过滤器中的数据与xss_clean像我目前。
- 使用PDO准备的查询将数据插入数据库
- (现在这一步使我感到困惑)我应该如何回应我的数据库数据? 我应该在这一步使用HTML净化器吗?
对不起,如果这个问题已被问及一百万次,我似乎无法找到我在找什么。我没有完全理解HTML净化器的概念。
编辑1:在配置文件中使用全局xss_clean过滤器。
如果数据中包含用户提交的HTML代码 - 是的 – 2013-02-17 14:25:05
没错,它不应该有HTML或脚本。我只会允许aplha_numberic字符。 – RaGe10940 2013-02-17 14:33:50
然后你不需要净化器。只需[过滤](http://www.php.net/manual/en/filter.filters.sanitize.php)字段,并确保它们只包含A-Z,0-9 – 2013-02-17 14:37:23