所以我想知道我是否可以,或者是否有另一个更好,更安全的解决方案来从数据库中获取信息。
if (isset($_SESSION['user_id'])) {
$string = mysql_query("SELECT * FROM users WHERE id = '$_SESSION[user_id]'");
$v = mysql_fetch_array($string);
}
因为我认为可能会破解“会话”并将user_id更改为另一个并且可以访问任何用户...
谢谢
答案 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的用户帐户具有允许用户从网站删除内容的特定权限,您可以想象其后果。