【发布时间】:2013-03-04 11:54:51
【问题描述】:
我知道了:
foreach($_POST['pos'] as $value) {
$new_value = "UPDATE users SET regnr='" . $value . "'
WHERE username='" . mysql_real_escape_string($_COOKIE['username']) . "'";
}
// Connect to database
$opendb = mysql_connect($dbhost, $dbuser, $dbpass) or die("Kunde inte ansluta till MySQL:<br>" . mysql_error());
mysql_select_db($dbname) or die("Kunde inte ansluta till databasen:<br>" . mysql_error());
mysql_query($new_value) or die(mysql_error());
// Close database
mysql_close($opendb);
信息:
$_POST['pos'] 在隐藏输入中保存来自数据库的值。这个值我选择用str_split($r['regnr'], 6); 拆分成一个JQuery 可排序列表。如果我在 foreach 循环中键入echo $value;,我就会从 JQuery 可排序列表中获得新值(未拆分,如我所愿)。我需要列表中的所有值,并通过echo 获得。但是,如果我使用 $value 变量来更新它来自的数据库,它只会使用 JQuery 可排序列表中的最后一个值进行更新。
有人可以解决吗? :D
【问题讨论】:
-
很好SQL injection hole。此代码允许任何恶意用户更改用户表中他们想要的任何内容,包括使自己成为超级用户/管理员。
-
怎么样?到目前为止,此代码只是一个示例。尚未专注于保护它。
-
如果用户更改了 cookie
username的值,那么用户可以注入这个值you-got-hacked'; DROP DATABASE;并且 poof 不再有数据库。是的,这就是 SQL 注入的严重程度。使用the PDO library 或the MySQLi library。 -
@Treps 你以后不会添加安全性。你从一开始就设计了合适的东西。
-
好的,我会调查的。但是有没有人可以解决实际问题? :)
标签: php mysql jquery-ui-sortable