2013-02-05 88 views
0

我要通過代碼點火器的文件,並想知道如果我得到這個權利的良好做法:安全與代碼點火器

  • 使用$這個 - >輸入 - >後(X,TRUE )而不是每次使用$ _POST

  • 最好使用PDO。如果沒有,請在查詢之前執行$ this-> security-> xss_clean(),然後執行$ this-> db-> escape()。

  • 使用bcrypt,而不是他們的加密系統

此外,重新填充表單我可以把輸入的值後(X,TRUE)=「」字段或做我有把它通過prep_for_form()?

他們應該寫一篇關於如何使用CodeIgniter處理數據的文檔。

編輯:顯然CodeIgniter的ActiveRecords已經逃離一切,所以沒有必要使用DB->越獄()...

EDIT2:顯然form_validation逃脫爲好。所以,做一個用htmlspecialchars已經做了form_validation後有雙重轉義...我已經張貼在這裏這個問題:https://github.com/EllisLab/CodeIgniter/issues/2230

+0

對於表單重新填充,請查看set_value()等。幫助函數 – gregory

+0

@gregory我使用樹枝的意見,所以沒有set_value()。 –

+1

我認爲不應該真正使用xss_clean,因爲它沒有正確實施; XSS是輸出問題,應通過過濾而不是輸入sanatization解決,這可能會導致一些問題,我只是在必要時在輸出中使用htmlentities() –

回答

1

1)是的,否則,你可以在你的config.php文件中啓用全局XSS過濾,從而獲取參數的輸入法將永遠逃脫。

2)CodeIgniter的查詢生成器已經不逃避,你只需要如果您正在使用驅動程序編寫自己的SQL查詢使用$this->db->escape()功能(例如,$this->db->query("SELECT * FROM users WHERE id = '" . $this->db->escape($this->input->post('id')) . "' LIMIT 1");

3)使用Bcrypt。如果你有PHP 5.3.7+,那麼你可以使用this library這將提供與PHP 5.5中的內置Bcrypt函數的轉發兼容性。

+0

如果我理解正確的XSS過濾!=轉義。我認爲你可以寫東西,它會輸出粗體文本。至於圖書館,則爲 –

+0

。 Ion_auth似乎也使用bcrpyt。它得到了git社區的大力支持。 –

+0

XSS過濾不能轉義,請更正。 XSS過濾可防止通過輸入注入腳本,轉義可防止將輸入解釋爲代碼並在服務器上運行,就像在數據庫中一樣。 – Dwight