gpt4 book ai didi

php - MySQL插入数据后需要转义

转载 作者:行者123 更新时间:2023-12-01 00:11:09 26 4
gpt4 key购买 nike

当重新使用数据库中的数据进行查询时,我是否需要使用 mysqli_real_escape_string。数据之前已转义,因此可以安全地插入数据库。我知道在将数据插入数据库时​​,反斜杠会被删除。谢谢。

最佳答案

是的,当您在另一个查询中重新使用来自数据库的数据时,您必须重新转义它。考虑逃避相当于礼物的礼品包装。您在一个查询中为数据库“包装”了一些数据。它将打开数据并将其放入数据存储中。当您稍后再次检索该数据时,包装消失了,数据再次“危险”。

例如考虑这样的事情:

$name = "Miles O'Brien"; 
$safe = mysql_real_escape_string($name); // name becomes Miles O\'Brien
$sql = "INSERT INTO people (names) VALUES '$safe'";
$result = mysql_query($sql) or die(mysql_error());

现在该名称已在数据库中,但您执行的转义不再存在 - 它在处理查询时已被数据库删除,因此如果您执行以下操作:

$sql = "SELECT name FROM people"
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_asssoc($result)) {
$name = $row['name']; // get Miles O'Brien from the DB again

在这里,您实际上已经找回了 Miles O'Brien,完全没有逃脱。

   $other_sql = "UPDATE ... WHERE name=$name";  <---INJECTION HERE
}

转义不是你只对“外部”数据做的事情......任何你插入查询字符串的数据都是“外部”数据,即使你只是从数据库中获取数据几行代码之前。

TL;DR:您可以轻松地给自己注入(inject)。

关于php - MySQL插入数据后需要转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885527/

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