簡體   English   中英

使用PHP保護公共API

[英]Securing public API with PHP

我正在使用PHP / MySQL和Javascript框架創建SPA博客網站,但尚未決定哪個網站。

我的想法是我願意創建一個API並使用Javascript來使用它,但是我想保護該API,以便沒有人可以訪問/ posts /例如並獲得所有帖子的列表。

我不需要任何注冊,也沒有用戶系統。

我將如何處理?

謝謝

您也許可以對列入白名單的IP地址進行硬編碼,但是正如Steve在評論中所指出的那樣:它是公共的還是不是公共的。

我將提供一些小的注冊功能,這些功能會生成可用於訪問您的API的API密鑰。

已經指出,公共API是公共的,但是可以采取一些步驟來使用戶(而不是UI)更難以訪問它。

問題類似於(盡管與“ 跨站點請求偽造 ”相同),並且您可以使用列出的任何預防技術的變體來減輕對API的未授權訪問。

最簡單的實現可能是這樣的:

index.html

<?php 
    $mytoken = uniqid();
    $_SESSION['token'] = $mytoken;
?>
<input type='hidden' name='apitoken' value='<?= $mytoken;?>' >

some-api-endpoint.php

<?php
    if($_GET['apitoken'] !== $_SESSION['token']) {
        header("HTTP/1.0 403 Forbidden", true, 403);
    }

如果有人想訪問您的公共API,他們將能夠,但是他們將不得不付出至少一點點的努力。

使用JWT服務也可以正常工作。

在這里看看: JWT簡介

您還可以使用將在初始會話身份驗證時為您的服務傳遞的api密鑰和機密。

這是一個Stackoverflow答案,可幫助您解釋需要做的事情: php中的密鑰和秘密

如果您真的很懶,可以只使用基本身份驗證或摘要身份驗證來在客戶端進行身份驗證。 (這不建議使用,並且存在安全風險,就像您不使用ssl一樣,密碼在請求中以純文本格式傳遞)

供您參考的另一篇文章: PHP HTTP身份驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM