我让用户使用此代码更新其名称。 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