在 php 中清理输入和输出的圣杯?
Posted
技术标签:
【中文标题】在 php 中清理输入和输出的圣杯?【英文标题】:The holy grail of cleaning input and output in php? 【发布时间】:2011-12-10 06:50:40 【问题描述】:在过去的 8 个月里,我一直在运行和开发一个分类网站,所有的错误都归咎于一个原因:用户如何输入他们的文本......
我的问题是:有没有php类,插件,我能做的事情
$str = UltimateClean($str)
在将 $str 发送到我的 sql 之前??
PS。当我开始使用 JSON 时,我还注意到问题加倍,因为我还必须小心以 JSON 格式输出结果..
我遇到的一些问题:多语言字符串(不同的字符集)、从 Excel 工作表复制粘贴。 注意:我不担心 SQL 注入。
【问题讨论】:
Is this a safe/strong input sanitization function? 或 Is htmlentities() and mysql_real_escape_string() enough for cleaning user input in PHP? 或任何其他 search results 的可能重复项。您的 JSON 查询需要详细说明。 【参考方案1】:不,没有。
不同的转义模式用于不同的目的。你无法普遍逃避某些事情。
对于数据库:使用PDO with prepared queries
对于 HTML: 使用 htmlspecialchars()
对于 JSON:json_encode()
为您处理此问题
对于字符集:您应该在您的页面上使用 UTF-8。这样做,并相应地设置您的数据库,然后看着这些问题消失。
【讨论】:
也许还可以考虑使用 ckeditor 等库来进行文本输入。这些可以帮助处理从单词粘贴的场景,但它是客户端的。 我想我说的是“帮助”,无论如何,JSON 意味着客户端,并且 OP 建议用户输入是问题的一部分。 +1 表示“你不能普遍逃避某些事情”。如果您觉得需要“通用转义”,则可能是您过早地转义了输入,或者将转义的数据重新用于不适合的目的。以上是关于在 php 中清理输入和输出的圣杯?的主要内容,如果未能解决你的问题,请参考以下文章