Php 在数据库中保存数据时,我真的需要使用mysql\u real\u escape\u字符串吗?
我正在使用Php 在数据库中保存数据时,我真的需要使用mysql\u real\u escape\u字符串吗?,php,mysql,mysql-real-escape-string,stripslashes,Php,Mysql,Mysql Real Escape String,Stripslashes,我正在使用mysql\u real\u escape\u string将内容保存到我的mysql数据库中。我通过表单保存的内容是HTML。当我需要时,我删除并重新上传在DB中写入的PHP文件 要正确显示HTML输入,我使用stripslashes() 在另一种情况下,当我插入它时没有mysql\u real\u escape\u string,我不会在输出上使用stripslashes() 你的意见是什么?stripslashes是否严重影响性能?不要考虑性能,考虑安全性。使用mysql\u r
mysql\u real\u escape\u string
将内容保存到我的mysql数据库中。我通过表单保存的内容是HTML。当我需要时,我删除并重新上传在DB中写入的PHP文件
要正确显示HTML输入,我使用stripslashes()
在另一种情况下,当我插入它时没有mysql\u real\u escape\u string
,我不会在输出上使用stripslashes()
你的意见是什么?
stripslashes
是否严重影响性能?不要考虑性能,考虑安全性。使用mysql\u real\u escape\u string
每次将数据插入数据库时不要考虑性能,考虑安全性。使用mysql\u real\u escape\u string
每次将数据插入数据库时,最好清除数据中潜在的恶意或被忽略的特殊字符,这些字符可能会引发错误或损坏数据库
根据PHP文档,它甚至会说“如果不使用此函数转义数据,则查询易受攻击。”最好清除数据中可能引发错误或损坏数据库的潜在恶意或被忽略的特殊字符
根据PHP文档,它甚至会说“如果不使用此函数转义数据,则查询易受攻击。”Donot使用
stripslashes()
。它在安全性方面是完全无用的,并且没有额外的好处。这种做法源于黑暗时代的“魔法引号”,这是一种过去的东西,在下一个PHP版本中已被消除
相反,仅过滤输入:
- 字符串:
mysql\u real\u escape\u字符串($data)
- 整数:
(int)$data
- 浮动:
(浮动)$data
- 布尔值:
isset($data)&&$data
编辑:如果您必须执行
stripslashes()
才能正确查看输出,那么很可能您已经启用了magic quotes。一些CMS甚至犯了一个严重的错误,做了他们自己的魔术引语(例如:Wordpress)。始终按照我上面的建议进行筛选,关闭神奇引号,您应该会没事。不要使用stripslashes()
。它在安全性方面是完全无用的,并且没有额外的好处。这种做法源于黑暗时代的“魔法引号”,这是一种过去的东西,在下一个PHP版本中已被消除
相反,仅过滤输入:
- 字符串:
mysql\u real\u escape\u字符串($data)
- 整数:
(int)$data
- 浮动:
(浮动)$data
- 布尔值:
isset($data)&&$data
stripslashes()
才能正确查看输出,那么很可能您已经启用了magic quotes。一些CMS甚至犯了一个严重的错误,做了他们自己的魔术引语(例如:Wordpress)。始终按照我上面的建议进行过滤,关闭魔法引号,你应该会没事的。不,不要逃避它。改用。以原始格式存储数据,并根据显示需要对其进行处理-例如,在显示用户提供的HTML时,使用适当的方法防止Javascript执行
有关此主题的更多信息,请参阅Bill Karwin的Sql注入神话和谬误
有关过滤HTML以获取输出的几种方法,请参阅和。不,不要逃避它。改用。以原始格式存储数据,并根据显示需要对其进行处理-例如,在显示用户提供的HTML时,使用适当的方法防止Javascript执行
有关此主题的更多信息,请参阅Bill Karwin的Sql注入神话和谬误
有关过滤HTML以获取输出的几种方法,请参阅和。查看一个数据库抽象库,它可以自动完成所有这些以及更多功能,例如
它解决了其他人提出的许多问题,例如安全性/参数化。我怀疑开发人员是否值得为每一个查询或牺牲的安全实践手动执行所有这些操作而节省任何性能。请查看一个数据库抽象库,它可以自动执行所有这些操作,甚至更多操作,例如
它解决了其他人提出的许多问题,例如安全性/参数化。我怀疑开发人员是否值得为每一个查询或牺牲的安全实践手动执行所有这些操作而节省任何性能。不要这样做。即使提到。stripslashes/addslashes。我只是在练习中有点偏执,仅此而已。对不起,吓到你了。即使提到。stripslashes/addslashes。我只是在练习中有点偏执,仅此而已。很抱歉这样做:-p描述字段有
什么代码可以在页面上显示此内容而不是stripslashes?@Nikolai-正如我所说,您必须在本例中使用stripslashes()
,但这仅仅是因为启用了magic quotes。此设置是无用的,事实上它正在被删除。如果您关闭它并重新输入内容,您将不需要使用stripslashes()
。我在一个共享服务器上,我想这将导致我陷入无止境的困境。所以,我想我必须使用mysql\u real\u escape\u string
来处理字符串和stripslashes
。描述字段有
什么代码可以在页面上显示这个而不是stripslashes?@Nikolai-正如我所说的,在你的情况下,你必须使用stripslashes()
,但这只是因为启用了神奇的引号。此设置是无用的,事实上它正在被删除。如果关闭并重新输入内容,则不需要使用stripsl