php:从数据库中获取用户信息,这段代码安全吗?

时间:2010-08-06 15:27:43

标签: php

所以我想知道我是否可以,或者是否有另一个更好,更安全的解决方案来从数据库中获取信息。

if (isset($_SESSION['user_id'])) {
$string = mysql_query("SELECT * FROM users WHERE id = '$_SESSION[user_id]'");
$v = mysql_fetch_array($string);
}

因为我认为可能会破解“会话”并将user_id更改为另一个并且可以访问任何用户...

谢谢

3 个答案:

答案 0 :(得分:4)

这取决于user_id首先进入会话的方式 根据经验,您不应将任何未过滤的值放入查询中 你应该至少使用mysql_real_escape_string。 更好的方法是不使用the old and outdated mysql扩展名,而是使用mysqli's prepared statements

答案 1 :(得分:2)

我建议转义user_id,只是为了确定。您还应该测试是否找到任何行(可选,取决于使用情况)。

答案 2 :(得分:0)

应该过滤来自用户的每个数据,而不是直接在查询中使用;这样可以避免SQL注入。

假设$_SESSION['user_id']的内容为' OR id = '12' //;查询将变为SELECT * FROM users WHERE id = '' OR id = '12' //'。假设ID为12的用户帐户具有允许用户从网站删除内容的特定权限,您可以想象其后果。