简体   繁体   English

通过数据库获取结果的问题,其中会话ID登录在用户ID中,我将不得不检查通过链接获取的uid

[英]Issue with getting result by database where session id is logged in user id and I would have to check uid which i am getting by link

$getwhole_messages = $db->query("
SELECT * FROM `user_messages` 
WHERE `sender_id`='".$_SESSION['RVuser']."' ||
`reciever_id`='".$_SESSION['RVuser']."' &&
`sender_id`='".$_GET['uid']."' ||
`reciever_id`='".$_GET['uid']."'"
);

Where as I want to put check that will let me know that session id is match with uid. 我想放在哪里检查,让我知道会话ID与uid匹配。 It would be in sender_id or reciever_id. 它将在sender_id或reciever_id中。

Too long for a comment, beyond what tadman said (You're at severe risk of SQL injection attacks), this query is left way too open. 除了tadman所说的(您有遭受SQL注入攻击的严重风险)之外,对此发表评论的时间太长了,这个查询太开放了。

You have this matching when any of these conditions exist: 存在以下任何一种情况时,您具有此匹配项:

Condition 1: When sender_id = $_SESSION['RVuser'] 条件1:当sender_id = $ _SESSION ['RVuser']

Condition 2: When receiver_id = $_SESSION['RVuser'] AND sender_id = $_GET['uid'] 条件2:当receiver_id = $ _SESSION ['RVuser']和sender_id = $ _GET ['uid']

Condition 3: When receiver_id = $_GET['uid'] 条件3:当receiver_id = $ _GET ['uid']

So all it would take is for someone to load your page with ?uid=# to get information because of condition 3. 因此,由于情况3,某人将您的页面加载为?uid=#即可获取信息。

Always sanitize vulnerable inputs! 始终清洁易受伤害的输入! I'm assuming you're using MySQLi in my example. 我假设您在示例中使用的是MySQLi。

$select = sprintf("SELECT * FROM user_messages WHERE sender_id=%d || reciever_id=%d && sender_id=%d || reciever_id=%d;",
  $_SESSION['RVuser'],
  $_SESSION['RVuser'],
  $db->real_escape_string($_GET['uid']),
  $db->real_escape_string($_GET['uid'])
);

if($getwhole_messages = $db->query($select))
  // Prosess results
} else {
  // Output Query error
}

Please provide error details so we can provide more of an answer. 请提供错误详细信息,以便我们提供更多答案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM