gpt4 book ai didi

php - mysql_real_escape_string 是否足以用于非常简单的数据库插入?

转载 作者:行者123 更新时间:2023-11-30 23:40:21 25 4
gpt4 key购买 nike

示例代码:

$email = "" . $_POST['email'];
$con = mysql_connect("localhost","user","pass")
or die('Could not connect to database.');
mysql_select_db("face", $con);

// Sanitization step
$sanitemail = mysql_real_escape_string($email);

// Is this safe?
mysql_query("INSERT INTO landing_oct_2010 (email) VALUES ('$sanitemail');");

我想知道,对于这个简单的任务,仅使用 mysql_real_escape_string 是否足以至少防止注入(inject)式 SQL 攻击,或者我是否应该采取其他一些预防措施。

我在此样本中收集电子邮件地址是偶然的。如果我知道我正在使用电子邮件地址,我将只输入一个正则表达式和一些 DNS 检查,并且在那里我也会内置验证。但是,我想关注手头的一般问题:单一的卫生功能是否足够?

最佳答案

是的,足够了。好吧,有点。

当正确且一致地使用时,mysql_real_escape_string 应该足以防止 SQL 注入(inject)。该函数(与 mysql_escape_string 不同)考虑了您连接的字符集,因此它应该适用于任何站点,只要您实际使用正确的字符集进行通信即可。

但是,在过去,bugs have existed在转义例程中,无论如何都可能导致 SQL 注入(inject)(在适当的条件下)。

更好的选择是使用带有 MySQLi 库的参数化查询,因为这样就完全不需要转义了。参数化查询基本上通过将数据与查询结构分离来工作,这反过来意味着不可能进行 SQL 注入(inject)。在实现方面,数据库开发人员也更难引入允许 SQL 注入(inject)的错误,同样是因为查询结构是单独给出的。

关于php - mysql_real_escape_string 是否足以用于非常简单的数据库插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com