我应该在插入数据库之前或在页面上打印之前使用“strip_tags()”吗?

Afi*_*baz 2 php security

我正在遵循各种步骤来防止对我的 Web 应用程序进行任何类型的注入或攻击。当我关注他们时,我的脑海中浮现出一个问题:防止网络应用程序遭受攻击的最基本操作之一是防止用户编写可能伤害其他用户的恶意脚本。在我读过的资料中,它说你应该使用strip_tags()or htmlentities(),但如果我应该在将用户数据插入数据库之前或在打印它之前或者两者都使用它还不够清楚。

所以基本上我的问题是我什么时候使用这些功能?另外,如果我想保留一些 html 标签怎么办?{如果我使用 html 文本编辑器},是否推荐这样做?

Dha*_*man 5

strip_tags()用于清理您从用户收到的数据。它将尝试删除所有 NULL 字节、HTML 和 PHP 标签。就我个人而言,我不喜欢这个函数,因为有更好的方法来验证和清理输入,例如filter-input
如果你想保留一些 HTML,你可以看看http://htmlpurifier.org/

htmlentities()用于将数据输出到 HTML 上下文中。如果您在 HTML 中显示任何内容(无论数据来自何处),您应该使用它来防止 XSS。更多信息

为了防止 SQL 注入,您应该使用参数化准备好的语句,而不是手动构建查询。它们由PDOMySQLi提供。如果您确保永远不会混合数据和 SQL,您可以将任何您想要的数据插入数据库,甚至是其他 SQL。

它们都有不同的用途并防止不同类型的错误。