我讓用戶使用此代碼更新其名稱。 A)這足以消毒信息嗎? b)當我把HTML標籤放在那裏,如<b>name</b>
它實際上在我的網站上以粗體顯示!有沒有可以讓PDO去掉所有HTML的選項?PDO&消毒日期/刪除HTML
回答
看起來相當健康。儘管如此,我建議使用POST而不是GET來進行破壞性/操作性操作。如果你堅持發佈數據,你不太可能遭受CSRF攻擊,儘管它不會讓你完全免疫。
如果不真正想用戶輸入HTML到名稱字段,不用擔心在途中到數據庫過濾數據。通過htmlspecialchars()
或htmlentities()
逃脫它。
我總是由數據應進入數據庫爲原料儘可能的想法站着。
編輯:差點忘了,請確保在$_GET
/$_POST
實際的期望值試圖使用他們之前存在,如
if (isset($_POST['name'])) {
// now use it
絕不信任用戶輸入!至少,將$_GET['name']
包裝在消毒功能中,如mysql_real_escape_string()以防止SQL注入攻擊。然後,當您輸出用戶提供的數據時,請確保將其包裝在htmlspecialchars()中以防止跨站點腳本攻擊(XSS)。
A)閱讀manual:
到的參數預備報表 不需要引用;驅動程序 會自動處理此問題。如果 應用程序獨佔地使用預處理 語句,開發人員可以肯定 沒有SQL注入會發生 (但是,如果 查詢的其他部分正在興建了 轉義輸入,SQL注入是 仍有可能 )。
B)永遠不要相信用戶的數據。在輸出中使用htmlspecialchars
。
C)使用$ _ POST和查詢,這將改變任何數據令牌,以避免CSRF。
使用POST將不會避免CSRF。 – 2011-05-24 00:39:59
@Alix Axel使用POST可以避免大部分CSRF攻擊。使用POST和令牌將有助於避免它們全部:) – 2011-05-24 00:42:14
使用帶令牌的GET也可以避免任何CSRF攻擊。使用POST(不帶令牌)只會幫助避免不知道如何POST的人員的CSRF攻擊。我認爲你應該重申一下你的最後一點,因爲這是一個關鍵問題。 – 2011-05-24 01:29:03
- 1. 使用PDO消毒變量
- 2. Rails3消毒轉義HTML而不是刪除
- 3. 軌消毒方法不刪除HTML標籤
- 4. 消毒HTML數據
- 5. 消毒HTML代碼
- 6. PHP HTML消毒器
- 7. PDO password_verify,我需要消毒嗎?
- 8. 用於HTML消毒的庫
- 9. 消毒:: HTML有口音CakePHP2.0
- 10. 同時消毒HTML和SQL?
- 11. html消毒造成困難
- 12. 刪除UTC日期
- 13. JSTL刪除日期
- 14. AngularJS和消毒 - 消毒HTML沒有ngBind指令
- 15. 星期日自動刪除行日期
- 16. JMS毒害信息刪除
- 17. 如何消除或消毒Nicedit
- 18. pdo在服務器上插入消毒html,而不是在本地
- 19. 刪除線,其他日期
- 20. 刪除點從日期
- 21. 刪除對基於日期
- 22. 刪除日期框驗證
- 23. 如何刪除日期
- 24. 從表中刪除日期
- 25. C#如何刪除日期
- 26. Excel VBA刪除日期行
- 27. C#DatagridVIew刪除SQL日期
- 28. SQLite按日期刪除行
- 29. 舊日期刪除重複
- 30. 刪除日期歧義
哪一個更安全? (真的不關心速度/資源) – Nikki 2011-05-23 23:50:06
@Nikki哪個「什麼」更安全? 'htmlspecialchars()'vs'htmlentities()'?我建議你閱讀手冊並確定哪一個最適合你的目的。 – Phil 2011-05-23 23:51:49
謝謝 - htmlentities是我將要使用的一個,因爲它可以處理所有的html,而不僅僅是特殊字符。 – Nikki 2011-05-23 23:55:32