Php 使用HTTP_X_请求的_和会话ID保护REST API

Php 使用HTTP_X_请求的_和会话ID保护REST API,php,javascript,ajax,rest,xmlhttprequest,Php,Javascript,Ajax,Rest,Xmlhttprequest,我正在为我的网站构建一个API,我只希望该API可以从我自己的网站访问。我构建它的方式是使用ajax调用PHP文件: <?php session_start(); ?> <script> $.ajax({ type: "GET", dataType: "json", url: "secureapi.php", data: "test="+docu

我正在为我的网站构建一个API,我只希望该API可以从我自己的网站访问。我构建它的方式是使用ajax调用PHP文件:

    <?php session_start(); ?>
    <script>
        $.ajax({
            type: "GET",
            dataType: "json",
            url: "secureapi.php",
            data: "test="+document.cookie.substring(document.cookie.lastIndexOf('PHPSESSID')).replace(/phpsessid=/gi, '') + "userid=123",
            success: function(response){
                console.log(response);
            }
        });
    </script>

这是否足够安全,或者某人是否可以通过CURL或其他方法轻松获得会话id?

API的可能副本与HTML站点一样公开。您也可以使用身份验证cookies和权限检查以同样的方式保护和限制它们。@deceze是的,我知道,我在上面写了我的解决方案,现在我想检查这是否足够好或容易被破坏。您所做的测试基本上毫无意义。
X-Requested-With
头很容易被欺骗,不安全,如果需要会话,只需像往常一样启动会话并在其中保存一些值;同样的常规身份验证也可以工作
if($\u SESSION['loggedin'])
…AJAX调用不是“从您的网站”发出的。它来自随机客户端的浏览器!你能看到的唯一东西就是referer,但这很容易被欺骗,而且没有任何安全性。除非您使用某种令牌或登录系统,否则您的API是公开的。你不会要求你的常规网页“只被你网站的访问者访问”,对吗?AJAX请求没有任何不同。
<?php

    session_start();

    if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' AND $_POST['test'] == session_id()){
        //QUERY DATABASE AND RETURN JSON
    }

?>