Google 地图 Javascript API 的安全性

Security with Google Maps Javascript API

我正在使用 PHP 和 client-side Javascript 开发 web-app,其中实现了 Google 地图 Javascript API.

这个web-app的目的是为了能够预留一个driver的行程,比如....

为了计算旅程的距离,我使用了距离矩阵API,但我问我如何确保回调不被作弊?

查看我的代码

   service.getDistanceMatrix(
            {
                origins: [route[origin]],
                destinations: [route[destination]],
                travelMode: 'DRIVING',
                avoidTolls: true,
            }, callback());

        function callback(response, status) {
                var dist = response.rows["0"].elements["0"].distance.value;
                var duration = response.rows["0"].elements["0"].duration.value;
        }
);

这里用户可以很方便的改变"dist"变量的值!这将用于计算旅程的价格。
即使我直接使用 AJAX 调用将数据发送到服务器,他们也可以修改此调用的参数并设置他们想要的任何内容。

在这种情况下,我可能使用了错误的开发解决方案。
如果我使用了错误的解决方案或者是否存在保护我的应用程序的方法,请告诉我。
预先感谢您的回答。

首先,Javascript 可以随时由用户编辑。例如,创建该语言是为了使网页动画、显示照片、视频或与服务器交互。它只提供了一种动态化和动画化网页的方法,并不适用于所有商业方面。

为了从用户那里获得正确的信息,您必须使用php。数据可靠,可直接在服务器使用


如果你想找到用户的位置,我可以在php中给你这个代码:

<?php
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$country = $geo["geoplugin_countryName"];
$city = $geo["geoplugin_city"];
?>

注意:这段代码很简单,但不是很准确。如果您需要更多详细信息,可以参考 Stack Overflow 的 this 页面。


现在,如果您想估计两个位置之间的距离,请使用此代码:

function GetDrivingDistance($lat1, $lat2, $long1, $long2)
{
    $url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$lat1.",".$long1."&destinations=".$lat2.",".$long2."&mode=driving&language=pl-PL";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $response_a = json_decode($response, true);
    $dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
    $time = $response_a['rows'][0]['elements'][0]['duration']['text'];

    return array('distance' => $dist, 'time' => $time);
}

您可以像这样使用此功能:

$coordinates1 = get_coordinates('Tychy', 'Jana Pawła II', 'Śląskie');
$coordinates2 = get_coordinates($city, $country);
if ( !$coordinates1 || !$coordinates2 )
{
    echo 'Bad address.';
}
else
{
    $dist = GetDrivingDistance($coordinates1['lat'], $coordinates2['lat'], $coordinates1['long'], $coordinates2['long']);
    echo 'Distance: <b>'.$dist['distance'].'</b><br>Travel time duration: <b>'.$dist['time'].'</b>';
}

注意:我在 Stack Overflow 的 页面上找到了这段代码。

如果您有任何问题或意见,请告诉我。