Rumah >pembangunan bahagian belakang >tutorial php >Melaksanakan pengesahan keselamatan PHP menggunakan OneSignal

Melaksanakan pengesahan keselamatan PHP menggunakan OneSignal

王林
王林asal
2023-07-25 11:27:341527semak imbas

Gunakan OneSignal untuk melaksanakan pengesahan keselamatan PHP

Ikhtisar:
OneSignal ialah penyedia perkhidmatan tolak merentas platform yang boleh membantu pembangun menghantar pemberitahuan tolak kepada pengguna. Untuk memastikan keselamatan pemberitahuan tolak apabila menggunakan OneSignal, pengesahan diperlukan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan pengesahan keselamatan OneSignal.

Langkah:
Berikut ialah langkah untuk melaksanakan pengesahan keselamatan OneSignal menggunakan PHP:

  1. Daftar dan dapatkan kunci API:
    Pertama, kita perlu mendaftar akaun di laman web rasmi OneSignal dan membuat aplikasi. Selepas anda membuat apl anda, anda mendapat kunci API, yang anda gunakan untuk mengesahkan ke OneSignal.
  2. Bina fungsi pengesahan:
    Dalam PHP, kami boleh menggunakan perpustakaan fungsi curl untuk menghantar permintaan HTTP. Seterusnya, kita perlu membina fungsi yang mengesahkan sama ada permintaan OneSignal adalah sah.

    function validate_onesignal_request($api_key, $body, $timestamp, $signature) {
        // 构建用于验证的字符串
        $payload = $body . $timestamp;
        
        // 计算签名
        $computed_signature = hash_hmac('sha256', $payload, $api_key);
        
        // 对比签名
        return $computed_signature === $signature;
    }

    Dalam kod di atas, kami menggunakan fungsi hash_hmac untuk mengira tandatangan permintaan, dan kemudian membandingkan tandatangan yang dikira dengan tandatangan dalam permintaan. Jika kedua-duanya konsisten, permintaan itu sah. hash_hmac 函数计算请求的签名,然后将计算得到的签名与请求中的签名进行对比。如果两者一致,说明请求合法。

  3. 接收 OneSignal 请求并验证:
    我们需要构建一个 PHP 接口来接收 OneSignal 的请求,并进行验证。以下是一个简单的示例:

    $api_key = "API_KEY"; // 替换为您的 API 密钥
    
    // 检查请求方法是否为 POST
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $body = file_get_contents('php://input');
        $timestamp = $_SERVER['HTTP_X_ONESIGNAL_TIMESTAMP'];
        $signature = $_SERVER['HTTP_X_ONESIGNAL_SIGNATURE'];
        
        // 验证 OneSignal 请求
        if (validate_onesignal_request($api_key, $body, $timestamp, $signature)) {
            // 请求合法,处理推送通知逻辑
            // ...
            // 此处添加您的推送通知处理逻辑
            // ...
            
            // 返回合法响应
            http_response_code(200);
        } else {
            // 请求非法,返回错误响应
            http_response_code(403);
        }
    } else {
        // 非法请求方法,返回错误响应
        http_response_code(400);
    }

    在上述代码中,我们首先获取请求的内容($body)、时间戳($timestamp)和签名($signature)。然后,我们调用 validate_onesignal_request

  4. Terima permintaan OneSignal dan sahkan:
    Kami perlu membina antara muka PHP untuk menerima permintaan OneSignal dan mengesahkannya. Berikut ialah contoh mudah:
  5. rrreee
Dalam kod di atas, kami mula-mula mendapat kandungan yang diminta ($body), cap waktu ($timestamp) dan tandatangan ( $tandatangan). Kemudian, kami memanggil fungsi validate_onesignal_request untuk mengesahkan kesahihan permintaan. Jika permintaan itu sah, teruskan memproses logik pemberitahuan tolak jika permintaan itu menyalahi undang-undang, respons ralat dikembalikan.


Kerahkan kod dan ujinya: 🎜Simpan kod di atas sebagai fail PHP dan gunakan fail ke pelayan anda. Akhir sekali, anda boleh menggunakan alat seperti Posman untuk menghantar permintaan ujian dan mengesahkan bahawa respons yang betul dikembalikan. 🎜🎜🎜Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan PHP untuk melaksanakan pengesahan keselamatan OneSignal. Dengan menulis fungsi pengesahan dan antara muka PHP yang sepadan, kami boleh memastikan kesahihan permintaan OneSignal. Dengan cara ini, anda boleh menggunakan OneSignal untuk menghantar pemberitahuan tolak kepada pengguna anda dengan yakin dan memastikan pemberitahuan itu selamat. Semoga artikel ini membantu kerja pembangunan anda! 🎜

Atas ialah kandungan terperinci Melaksanakan pengesahan keselamatan PHP menggunakan OneSignal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn