我需要用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'] . "',
}";
}
我不相信我们对此没有解决方案!为了保护这个而失去了我的一天!
我只需要为浏览我的网站的人保护这一点,o可能每个域,或每个请求=/
没门!
在常规网页中设置会话变量,并在返回任何数据之前让getdata.php脚本检查会话变量。
我们没有针对用户的身份验证。我只是不想让任何人对数据库服务器做艰苦的工作!
然后对SQL查询使用速率限制,也许还有一些时间/大小限制。无需"保护对页面的访问"。
睡个好觉后,我的大脑可以更好地思考了!我认为在javascript的url上传递一些md5代码。然后我找到了它:
感谢rmorero
耶耶耶耶啊啊啊啊hhhhhhhh!!!!是吗!
在调用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 ?>&item<?php echo $item ?>&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=)
谢谢你们的帮助。