2017-03-15 82 views
0

我目前有一个cross-originajax应用程序,它使用我自己制作的一些个人API's如何保护我通过Ajax使用OAuth2访问的PHP API的安全性

我想保护它,所以只有我的应用程序可以使用api

我做了一些搜索,发现OAuth2。我跟着this step-by-step使用php,但我的应用程序是使用ajax请求构建的,所以我发现这个OAuth JS Library使用ajax进行身份验证,但我不明白如何使用它,有人可以举一些简单的例子吗?我真的是使用OAuth的初学者。

我的代码是或多或少是这样的: myrequests.js

function someRequest(parameter1){ 

    return $.ajax({ 
     url:'http:/www.mysite.com/myapis/customapi.php?callback=?', 
     dataType:'jsonp', 
     data:{p1:parameter1} 
    }) 
     .done(function(data){ 
     console.log("Done!"); 
    }) 
     .fail(function(data,textStatus,errorThrown){ 
     console.error(data,textStatus,errorThrown); 

    }) 
} 

在服务器我的API文件:customapi.php

我的请求.js文件

<?php 
    include "dbConnect.php"; 
    header('Content-Type:application/json;charset=UTF-8'); 

    $p = $_GET['p1']; er 

    $myquery = "SELECT name, adress from table1 WHERE name = :p"; 
    $sql = $pdo->prepare($myquery); 


    $sql->bindValue(":p",$p,PDO::PARAM_STR); 
    $sql->execute(); 

    $result = $sql->fetchAll(); 


    $data['d'] = $result; 
    echo $_GET['callback'] . '('.json_encode($data).')'; 

回答

0

我认为你应该依赖会话/ cookies - 即你的PHP API后端读取 - 因为它基本上是前端和后端相同的域(我猜)。

每次有人访问您的页面时,您都可以使用salt创建一个cookie,并且从您的API php脚本中读取该cookie。这意味着当然,任何从您的网站上获得cookie的人都可以阅读您的API,但如果您访问您的网站,这也是一样的。

如果需要,您可以仅为已在您的网站上登录的用户创建cookie。

+0

我的应用程序是'跨源',后端和前端处于不同的域。 'js'文件已经存在,'php'' api'在不同的域中。我不能使用cookies;另外,我想要一个更安全的方法,如OAuth。 – Lioo

相关问题