在HTTP GET中使用时,我的PHP参数有多脆弱?

时间:2014-06-09 00:39:26

标签: php mysql http parameters get

我正在为我的在线游戏创建一个登录系统,并使用MySQL来管理用户。为了验证数据库中存储数据的登录数据,我正在使用以下php脚本:

<?php
function mysqli_result($res, $row, $field=0) { 
    $res->data_seek($row); 
    $datarow = $res->fetch_array(); 
    return $datarow[$field]; 
}

$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'pass';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, 'my_db');

if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
//First, get the login details from the URL
$username = $_GET["username"];
$password = $_GET["password"];

//Now fetch the password that is on record for that account
$sql = "SELECT DISTINCT acc_password FROM users WHERE acc_username = '$username'";

$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$p_hash_store = mysqli_result($result, 0);

if (password_verify($password, $p_hash_store))
{
    echo "true";
}
else
{
    echo "false";
}
mysqli_close($conn);

现在我有点担心。为了将玩家用户名和密码输入到验证脚本中,我在游戏IDE中使用了一个等同于HTTP GET请求的函数,使用用户原始用户名和密码作为参数调用该验证脚本。它看起来像这样。

async_ini = http_get("http://www.website.com/script.php?username=" + obj_control_login.username + "&password=" + obj_control_login.password);

由于验证脚本如果密码与哈希匹配,则echos为true,否则我可以轻松判断登录详细信息是否正确。这个系统运行良好。

我的问题是我不喜欢我在HTTP GET请求中发送播放器的原始用户名和密码的事实因此我的问题的胆量:我在php URL中传递的参数是安全的还是他们开着窥探的眼睛?如果他们是脆弱的,我有什么办法可以解决这个问题吗?

我是MySQL和php的新手,这实际上是我在他们身上做的第一件事,所以如果整件事情是可笑的不安全请告诉我;这是我能想到将我的游戏制作软件与MySQL和密码散列相结合的唯一方法。

0 个答案:

没有答案