如何解决防止引号在清理后作为 HTML 实体保存在数据库中
这可能是一个愚蠢的问题,但在对最佳实践进行了所有研究之后——包括解释消毒、验证、转义存储和转义显示的this great SO post——我仍然感到困惑。
我已经构建了一个例程,用于清理用户输入 - 例如,评论帖子或“编辑我的名字”字符串 - 使用 $value = filter_var($value,FILTER_SANITIZE_STRING);
。给定 <a href="https://buy.my.stuff/">O'Hara</a>
的值,可以很好地去除 <a></a>
和类似标签。然后这个新值得到验证:如果空值和字段不可为空则出错;或者如果太长;等等。最后,我使用 CakePHP 查询构建器将该值保存在数据库中——当然,它支持绑定字符串值。
但是当我将该值保存在数据库中时,它被保存为 O'Hara
而不是 O'Hara
- 因为所述清理。
- 我是否应该将其解码回/转换为另一种格式?如果是,用什么方法?
- 或者,我是否要使用经过消毒的版本进行验证,然后使用 DB 存储的原始值——这不可能。
- 或者
FILTER_SANITIZE_STRING
是我需要调整的标志吗?我看过的教程 [1] [2] 表明标志就足够了。
我觉得很愚蠢,因为前面提到的那篇很棒的帖子似乎仍然对我来说还不够。我能找到的只有 posts from ~2012 说你应该绑定。
任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。