我正在尝试创建评论系统。我在用着 php-oembed 班级和 HTML净化器. 。我可以使用什么过滤器来确保将评论安全地插入我的数据库中?我知道您可以使用PHP过滤器,例如filter_sanitize_string,但是这些不会将HTML变成实体吗?

另外,如果您使用类似的东西 WMD编辑器, ,那么您是否也必须在客户端使用某些东西(例如 php降价)确保安全吗?

有帮助吗?

解决方案

基本上,您需要在将用户输入发送到某个地方时对用户输入进行消毒。

当您将其放入数据库中时,您需要通过引用SQL特殊字符来防止SQL注入(准备好的语句将为您做到这一点)。当您将其发送到浏览器时,您需要逃脱HTML特殊字符(PHP具有这样做的功能),以防止脚本注入。

您可能还有其他地方也需要逃脱特殊角色。例如,如果您将评论发送到服务器上的bash脚本以进行某种处理。在这种情况下,您需要引用或逃脱特定的特殊字符。

重要的是不要在错误的阶段引用/逃脱:例如,当您将其放入数据库中时,请不要逃脱HTML实体,除非您绝对确定自己在做什么。当您将其从数据库中抽出并准备将其发送到浏览器时,或者如果数据库连接失败(这可能会导致XSS漏洞),则很容易再次意外逃脱。 )。在最后一刻逃脱,您很可能会避免这些陷阱。

其他提示

您无需使用任何过滤器进行SQL注入。最好的解决方案是使用 准备的陈述. 。例如,PDO提供 Pdostatement.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top