|
1
5
这是一个很好的理由,主要是为了回应你自己发布的答案:使用
你似乎在假设只有单引号和双引号的字符会造成问题。mysql查询实际上容易受到
其他较小的缺点包括其他海报已经提到的关于mysql的内容,而不是 总是 用于Web内容,以及增加数据所需的存储量和索引空间(考虑一个引号字符存储一个字节,而实体形式存储六个或更多字节)。 |
|
2
9
放
最好在输出时退出输出。这是您唯一一次确定输出将指向网页,而不是日志文件、电子邮件或其他目标。 ps:php已经在标准php.ini文件中默认关闭了magic引号。它在php 5.3中已被弃用,将在php 6.0中从语言中完全删除。 |
|
3
2
我只回答你的第一个问题。 验证 输入 不管怎样,这是一个错误的方法,因为重要的不是输入,问题在于它的使用位置。PHP不能假定MySQL查询的所有输入都将输出到HTML实体有意义的上下文中。 很高兴看到magic_引号的出现;这是导致PHP出现大量安全问题的原因,很高兴看到他们采用了新的方法:) 如果您重新构造验证方法以在输出上进行验证,那么对于您正在工作的上下文,您将获得极大的帮助。只有作为程序员的你才能知道这一点。 |
|
|
4
1
MySQL不转换的原因
|
|
|
5
0
谢谢大家。我真的必须想一想,如果我把引号改成HTML实体而不是在实体上加斜杠,这意味着什么,也可能意味着什么,但是,这不是真的也改变了输出/输入吗? 我想不出为什么我们不能或不应该为MySQL使用HTML实体的原因,只要我们清楚地表明所有数据都是使用HTML实体编码的。毕竟,我的论点是基于这样一个事实,即大多数MySQL都用于输出到HTML浏览器,而且“和”和/可能严重损害MySQL数据库。所以,在将“和”和/作为HTML实体发送为插入查询之前,对它们进行编码是否更安全?另外,我们将使用XML,那么为什么在访问已经在HTML实体中编码的数据时浪费时间编写HTMLEntities、StripSlashes和AddSlashes呢? |
|
|
6
0
你不能只是转换
所以现在您必须转换所有HTML实体,而不仅仅是引号。然后你开始陷入各种奇怪的转换问题。最简单的解决方案是
存储真实数据
在数据库中,您可以按自己的喜好显示它。您可能需要使用实际的引号-在大多数情况下
有时,您可能希望将实际的HTML存储在一个字段中并将其原始显示(只要在进出时对其进行了检查和清理)。 |