0

我需要用 JavaScript 访问这个 php。我有这个 php 可以通过多种方式进行安全访问:仅用于我自己的 ip,仅用于我的域,不允许直接访问,由 htaccess 保护,我们知道很多其他方法来保护它。

现在我有了这个 JavaScript,然后你可以访问这个 JavaScript 并从我的数据库中获取数据。你可以像怪物一样做......你可以让一个机器人发送#input1并获取我的所有数据。

我试图找到一个超过 14 小时的解决方案,并阅读了许多帖子、网站,但没有运气。没门。哦,我的上帝,这可能吗?

这是我的代码的一部分:JavaScript

$.getScript("http://www.domain.com/getdata.php?data="+$("#input1").val(), function(){
    if (resultData["field2"] != '') {
        $("#input2").val(unescape(resultData["field2"]));
        $("#input3").val(unescape(resultData["field3"]));
    }   
});

和 PHP

header('content-type: application/json; charset: utf-8');

// here my get mysql connection and query.... where field1 = #input1

if ($row = mysql_fetch_assoc($res)) {
    echo "var resultData = {
        'field2'    : '" . $row['field2'] . "',
        'field3'    : '" . $row['field3'] . "',
    }";
}

我不相信我们对此没有解决方案!试图保护这一点让我失去了一天!

我只需要为浏览我的网站的人保护它,或者每个域或每个请求 =/

没门!

4

3 回答 3

1

在常规网页中设置会话变量,并让 getdata.php 脚本在返回任何数据之前检查会话变量。

于 2013-07-19T03:46:34.803 回答
1

我们没有对用户进行身份验证。我只是不想让任何人对数据库服务器进行艰苦的工作!

然后对您的 SQL 查询使用速率限制,并可能有一些时间/大小限制。不需要“保护对页面的访问”。

于 2013-07-19T03:59:02.883 回答
0

经过一夜的睡眠,我的大脑可以更好地思考!我认为在 javascript 的 url 上传递一些 md5 代码。然后我找到了它:

感谢 rmorero

啊啊啊啊啊啊啊啊啊啊啊啊!!!是吗!

在调用js的源文件上:

$secret ="ABC1232";

$item = array(
  "time"=>time(),
  "token_id"=>"<page_url>"
);

$signed = base64_encode(hash_hmac("sha256",json_encode($item),$secret));
$item = base64_encode(json_encode($item));

$ajax_url = "myscript.php?signed=$signed&item=$item";

在我的情况下,我会使用这个:

getdata.php?signed=<? echo php $signed ?>&amp;item<?php echo $item ?>&amp;data="+$("#input1").val()

在 php 文件上,连接到您的 mysql 或其他东西:

$item = json_decode(base64_decode($_REQUEST["item"]));

$timeout = 3600;

if($item->time < (time()-$timeout)){
  die("Invalid token - timeout");
}

if($item->token_id !== "<page_url>"){
  die("Invalid token - page url");
}

$secret ="ABC1232";
$valid = ($_REQUEST["signed"] === base64_encode(hash_hmac("sha256",json_encode($item),$secret));

if(!$valid){
  die("Invalid token");
}

我只是没有测试,但我敢肯定,它会像怪物一样工作=)

最大的解决方案是......当你遇到这样的问题时,离开电脑,用你的大脑思考!而且,这是解决方案

在 javascript 的 url 中传递一些东西,我们有很多方法可以确保它的安全。

现在,我要尝试做一些事情来使用 POST 而不是 GET =)

谢谢你们尝试提供帮助。

于 2013-07-19T14:55:23.577 回答