使用CSRF保护来保护PHP API

时间:2017-05-10 07:27:43

标签: php api

我有一个api端点,它读取json数据并每秒存储到后端。

现在我需要在将此端点传递给客户端之前保护此端点,这样就可以了 客户端需要使用生成的令牌,并且只有在令牌有效时才能执行API。

下面我写了一个生成随机令牌的代码。

/source/{$short_name}{$suffix}

如何将其与我的api集成,并要求我的客户将生成的令牌作为标题添加到实际的api端点URL中。

我的API网址如下:http://demo.abc.com/sample.php

<?php

    /*To generate a cryptographically secure token */

    //Generate a random string.
    $token = openssl_random_pseudo_bytes(16);

    //Convert the binary data into hexadecimal representation.
    $token = bin2hex($token);

    echo 'TOKEN: '.$token;

?>

客户端需要使用以下标题:

http://demo.abc.com/sample.php?token='&LT; whateveris_generated&GT;'

或者需要任何其他安全或更好的方式将令牌传递给API

1 个答案:

答案 0 :(得分:0)

如果您的目标是CSRF保护,只要令牌不会随请求自动发送(例如,它不会存储为Cookie),您的API就不会受到攻击。如果您通过HTTP发送令牌,那么它可以从流量中嗅探,因此您可能希望使用HTTPS。我还建议在HTTP标头中发送身份验证令牌,而不是在查询字符串中。