我目前使用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