|
6
|
| waiwai933 · 技术社区 · 16 年前 |
|
|
1
5
在所有新代码中,进入数据库的转义数据都应弃用,而应使用准备好的语句。任何告诉你不这样做的人都是对你的极大伤害。
我生活的一般规则是验证(而不是过滤,如果不正确则拒绝)输入&转义输出(基于上下文)。 |
|
|
2
12
它们是用于不同目的的不同工具。 mysqli_real_escape_string使插入MySQL的数据更安全(但参数化查询更好)。 Htmlentities使数据安全地输出到HTML文档中 addslashes使数据在其他一些情况下更安全,但对MySQL来说还不够 |
|
|
4
0
是的,在所有用户输入上使用mysqli_real_escape_字符串或类似PDO的库。回显时,我使用带有ENT_引号的htmlentities作为第二个参数,因为它将所有适用字符转义到它们的html实体,包括引号。 |
|
|
5
0
注意:应避免在UTF-8编码文档中使用htmlentities()。见: 注意(引自) phpwact.org
|
|
|
6
0
PHP 5.2及以上版本的另一个有趣的解决方案是使用过滤器扩展: http://www.php.net/manual/en/book.filter.php 它允许您验证和清理用户输入。有许多内置的过滤器可用,它们可以与标志相结合,以调整其行为。 此外,这些过滤器还可用于验证/清理整数、浮点、电子邮件和特定正则表达式。 我个人已经开始在我的项目中使用它们来验证表单和输出用户输入的数据,我很高兴我做到了。尽管如此,当我在MySQL数据库中插入值时,我使用准备好的查询来增加安全性。这些解决方案一起可以帮助避免大多数SQL注入和XSS类型的攻击。 |
|
7
0
你不可能只有一个“转义”功能,却期望它一直工作。有不同的攻击需要特定的卫生程序。理解这一概念的唯一方法是编写一些易受攻击的代码,然后加以利用。编写攻击代码对于理解任何安全系统都至关重要。
利用: http://localhost/sqli_test.php?host= \&名称=%20睡眠(20)--%201 mysql的最佳转义函数是mysqli_real_escape_string(),但这可能会失败:
利用: http://localhost/sqli_test.php?id=1%20or%20sleep(20) OWASP top 10 因为web应用程序的安全性有很多问题。 |
|
|
Michael · 某些Windows客户端上的命名管道安全问题 1 年前 |
|
|
adamency · 是否可以从Go二进制文件的源代码中检索字符串? 1 年前 |
|
|
AlboSimo · PayPal Api密钥安全 2 年前 |