【发布时间】:2010-12-21 01:07:44
【问题描述】:
我正在研究如何在来自外部世界的数据被用于应用程序控制、存储、逻辑......之类的东西之前正确转义它。
很明显,随着魔术引号指令在 php 5.3.0+ 中很快被弃用,并在 php6 中被删除,这变得更加紧迫,对于任何想要升级和使用新语言功能的人来说,同时保持旧代码(不要'我们喜欢它..)。
但是,我没有看到的一件事是关于理论/最佳实践以及保护数据后该怎么做的大量讨论 - 例如,使用或不使用斜杠进行存储?我个人认为将转义数据保存在数据库中是一个坏举动,但希望听到讨论并最好阅读一些案例研究..
PHP 手册中的一些链接仅供参考:
PHP Manual - mysql_real_escape_string
等等等等
有什么建议吗?
【问题讨论】:
-
您所说的“例如,使用或不使用斜杠进行存储”这一事实使我相信您可能对正确转义有一个错误的概念。如果您正确转义,则发送到需要斜杠的数据库的字符串将包含它们,但实际上不会存储在数据库中。如果您在数据库中看到斜线,则数据被不正确地转义。
-
请详细解释一下 longneck - mysql 会在插入前删除转义符吗?有没有关于这个的页面?但你说得对——我想我在过去的某个时候忽略了这一点,现在正试图迎头赶上。
-
mysql_real_escape_string 不会转义斜杠等。它使字符串对于 SQL 查询是安全的。
-
如果您要检查服务器是否打开了魔术引号,如果是,请删除斜杠,您需要查看 get_magic_quotes_gpc() 和 stripslashes() 函数。
标签: php mysql post get escaping