Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Pengesahan pelbagai faktor dengan PHP dan Twilio

PHP Master | Pengesahan pelbagai faktor dengan PHP dan Twilio

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2025-02-26 09:02:11926semak imbas

PHP Master | Multi-Factor Authentication with PHP and Twilio

mata teras

    Pengesahan multifactor (MFA) memerlukan sekurang-kurangnya dua kaedah pengesahan yang berbeza, yang jauh lebih selamat daripada pengesahan faktor tunggal tradisional. Kaedah MFA praktikal adalah meminta pengguna untuk memberikan kata laluan dan token pengesahan yang dihantar ke telefon mereka melalui SMS atau panggilan suara.
  • Twilio menyediakan infrastruktur dan API yang boleh digunakan oleh pemaju untuk menulis aplikasi telefon interaktif, termasuk sistem pengesahan pelbagai faktor. Pemaju boleh menggunakan Twiml (Twilio Markup Language) dan API REST untuk membuat dan menerima panggilan dan menghantar dan menerima mesej teks melalui Twilio.
  • menggunakan Twilio untuk melaksanakan pengesahan multi-faktor melibatkan membuat contoh baru kelas Services_twilio, mengakses APInya melalui harta akaun, dan menghantar mesej SMS atau memulakan panggilan suara melalui kaedah Create ()) sumber panggilan panggilan.
  • Proses pengesahan multi-faktor melibatkan menunjukkan pengguna borang log masuk untuk memulakan proses, mengesahkan kelayakan mereka, menghantar kod mereka ke telefon mereka, dan membenarkan pengguna hanya selepas dia mengemukakan kod yang betul. Proses ini boleh disesuaikan dan meningkatkan ciri -ciri seperti meneruskan pautan kod pengesahan, mengunci akaun jika kod yang salah disediakan, dan pembalakan peristiwa pengesahan.
Terdapat banyak cara untuk mengesahkan identiti pengguna: merujuk kepada beberapa aspek pengguna sendiri (seperti biometrik), bertanya apa yang pengguna tahu (seperti kata laluan), atau bertanya apa sebenarnya pengguna (seperti kad RFID). Laman web tradisional melaksanakan pengesahan faktor tunggal, yang hanya memerlukan kata laluan pengguna. Tetapi sebaliknya, pengesahan multifaktor memerlukan sekurang -kurangnya dua kaedah pengesahan yang berbeza dan lebih selamat. Menggunakan biometrik untuk mengesahkan akses seseorang ke laman web anda mungkin masih jauh untuk pergi, dengan banyak halangan teknikal dan isu kebebasan sivil untuk diatasi. Kaedah pengesahan multi-faktor yang lebih praktikal adalah untuk melaksanakan pilihan dari dua kategori lain, seperti memerlukan kata laluan dan token pengesahan yang dihantar kepada pengguna melalui SMS atau panggilan suara (pengguna mengetahui kata laluan dan mempunyai telefon bimbit). Inilah yang anda akan belajar bagaimana untuk mencapai dalam artikel ini. Ia boleh mengecewakan jika anda melakukan integrasi telefon dari awal, dan dalam kebanyakan kes ia tidak praktikal untuk membina infrastruktur anda sendiri (walaupun ia boleh dilakukan dengan program seperti perkakasan komoditi dan asterisk). Nasib baik, Twilio menyediakan infrastruktur dan API yang pemaju boleh dengan mudah menulis aplikasi telefon interaktif. Saya akan menggunakan perkhidmatan mereka dalam artikel ini. Anda boleh membuat dan menerima panggilan dan menghantar dan menerima mesej teks melalui Twilio menggunakan Twiml (Twilio Markup Language) dan API REST. Anda boleh menggunakan API secara langsung atau menggunakan salah satu perpustakaan tambahan yang tersedia. Perpustakaan yang saya akan gunakan di sini ialah Twilio-PHP, yang merupakan perpustakaan yang diterbitkan dan disokong secara rasmi oleh Twilio. Jadi, adakah anda bersedia untuk belajar bagaimana melaksanakan pengesahan multi-faktor? Teruskan membaca!

Sambung dengan php

Menyambung ke perkhidmatan Twilio semudah termasuk perpustakaan Twilio-PhP dan mewujudkan contoh baru kelas Services_Twilio. Pembina objek ini menerima token SID dan pengesahan akaun anda yang disenaraikan di halaman papan pemuka akaun Twilio anda selepas anda mendaftarkan perkhidmatan mereka. Dengan contoh perkhidmatan_twilio yang tersedia, anda boleh mengakses APInya melalui harta akaun. Akaun mendedahkan contoh perkhidmatan_twilio_rest_account yang mewakili akaun Twilio anda. Saya hanya menggunakan satu akaun di sini, tetapi boleh mempunyai beberapa sub-akaun. Ini mungkin berguna untuk memecahkan interaksi anda berdasarkan keperluan anda. Anda boleh membaca dokumentasi Twilio untuk mengetahui lebih lanjut mengenai sub-akaun.

<code class="language-php"><?php require "Services/Twilio.php";

define("TWILIO_SID", "…");
define("TWILIO_AUTH_TOKEN", "…");

$twilio = new Services_Twilio(TWILIO_SID, TWILIO_AUTH_TOKEN);
$acct = $twilio->account;</code>
Contoh akaun

mendedahkan beberapa sifat lain, termasuk panggilan dan sms_messages. Ini adalah contoh objek seperti Services_Twilio_Rest_Calls dan Services_twilio_rest_smsmessages yang merangkumi sumber REST yang digunakan untuk mengeluarkan panggilan dan mesej anda masing -masing. Walau bagaimanapun, anda jarang menggunakan objek ini di luar kaedah membuat (), dan dokumentasi memanggil sifat mereka mendedahkan mereka "sumber contoh". Saya akan melakukan perkara yang sama untuk membantu mengelakkan kekeliruan.

Hantar mesej teks

menghantar mesej SMS dilakukan melalui kaedah CREATE () Sumber Sumber Sumber SMS ($ acct- & gt; SMS_Messages). Kaedah ini menerima tiga parameter: Nombor Twilio akaun anda (sama dengan "alamat penghantar" e -mel), nombor penerima ("alamat penerima"), dan teks mesej anda (sehingga 160 aksara).

<code class="language-php"><?php $code = "1234"; // some random auth code

$msg = $acct->sms_messages->create(
    "+19585550199", // "from" number
    "+19588675309", // "to" number
    "Your access code is " . $code
);</code>

Di sebalik tabir, perpustakaan Twilio-PHP membuat beberapa permintaan pos untuk Twilio API bagi pihak anda. Contoh perkhidmatan_twilio_rest_smsmessage dikembalikan oleh panggilan yang merangkumi maklumat mengenai mesej. Anda boleh melihat senarai lengkap mengenai maklumat apa yang disediakan dalam dokumentasi, tetapi mungkin nilai yang lebih penting didedahkan oleh status dan atribut harga. Status memaparkan status mesej teks (beratur, dihantar, dihantar atau gagal), sementara harga memaparkan jumlah mesej yang dikenakan untuk akaun anda.

Hantar panggilan suara

Memulakan panggilan suara dilakukan melalui kaedah CREATE () Sumber Contoh Panggilan ($ acct- & gt; panggilan). Seperti menghantar mesej teks, anda perlu memberikan nombor akaun, nombor penerima, dan mesej anda. Walau bagaimanapun, dalam kes ini, mesej itu adalah URL dokumen TWIML yang menerangkan sifat panggilan.

<code class="language-php"><?php // Note spaces between each letter in auth code. This forces
// the speech synthesizer to enunciate each digit.
$code = "1 2 3 4";

$msg = $acct->calls->create(
    "+19585550199", // "from" number
    "+19588675309", // "to" number
    "http://example.com/voiceCall.php?code=" . urlencode($code)
);</code>
Perpustakaan

sekali lagi membuat permintaan pos bagi pihak anda dan membuat panggilan suara. Apabila orang yang dipanggil menjawab panggilan, proses Twilio akan mengambil dan melaksanakan perintah yang disediakan dalam XML URL panggil balik. Dalam contoh memulakan panggilan suara di atas, saya telah lulus kod pengesahan sebagai parameter GET ke URL skrip panggil balik. Apabila Twilio mengambil URL, PHP menggunakan parameter ini apabila memberikan respons. Membina aliran panggilan hanya memerlukan sebilangan kecil tag twiml, tetapi anda boleh menggunakannya untuk menentukan proses yang agak kompleks (seperti menu pokok telefon, dan lain -lain). Walau bagaimanapun, aliran panggilan asas untuk senario sedemikian boleh dihasilkan oleh PHP, seperti yang ditunjukkan di bawah:

<code class="language-php"><?php require "Services/Twilio.php";

define("TWILIO_SID", "…");
define("TWILIO_AUTH_TOKEN", "…");

$twilio = new Services_Twilio(TWILIO_SID, TWILIO_AUTH_TOKEN);
$acct = $twilio->account;</code>

Tag Twiml yang digunakan di sini adalah tindak balas (elemen akar), katakan (menyediakan teks Twilio akan berkata), dan Kumpulkan (mengumpul input pengguna). Apabila mengucapkan teks yang ditunjukkan oleh elemen kanak -kanak, Twilio juga akan mendengar input pengguna kerana berkumpul dan berhenti sejenak selama lima saat supaya pengguna dapat memasukkan respons mereka. Sekiranya berkumpul tanpa input, ia keluar dan melaksanakan teks berikutnya dan menamatkan panggilan. Jika tidak, input akan dihantar kembali ke URL tindakan melalui pos untuk pemprosesan selanjutnya. Dokumentasi Twilio Gather sangat baik untuk menerangkan tingkah laku dan sifat elemen yang boleh anda gunakan untuk mengubah suai tingkah laku, dan juga menyenaraikan beberapa contoh. Saya cadangkan anda membacanya dengan cepat. Sebelum meneruskan, ada satu lagi perkara yang perlu diperhatikan; Ini memaksa synthesizer ucapan untuk menyebut satu demi satu, mengatakan "satu dua tiga empat" bukannya "seribu dua ratus tiga puluh empat". Untuk sintesis pertuturan, kadang -kadang apa yang kita lihat dalam teks tidak selalu apa yang kita dapat. Sekiranya ia membawa kejelasan dan pemahaman yang lebih baik kepada Callee anda, adalah baik untuk mengubah suai atau merindui perbualan sebutan.

Melaksanakan pengesahan multi-faktor

Sekarang anda telah mempelajari aliran kerja asas untuk SMS dan interaksi suara dengan Twilio, sudah tiba masanya untuk melihat bagaimana ia sesuai dengan proses log masuk. Apa yang anda lihat di sini sangat mudah dan mudah, dan untuk kejelasan saya telah mengurangkan kod yang disertakan, kerana butiran proses log masuk anda sendiri terikat. Borang log masuk untuk memulakan proses hendaklah dipaparkan kepada pengguna. Borang penyerahan menyebabkan anda mengesahkan kelayakan mereka dan menolak kelayakan yang tidak sah, tetapi kelayakan yang sah tidak boleh segera mengesahkan pengguna ke aplikasi anda. Sebaliknya, merawat pengguna sebagai "disahkan sebahagiannya", yang merupakan keadaan yang membolehkannya melihat bentuk kedua kod yang diminta telah dihantar ke telefonnya. Pengguna hendaklah diberi kuasa hanya selepas dia mengemukakan kod yang betul.

<code class="language-php"><?php $code = "1234"; // some random auth code

$msg = $acct->sms_messages->create(
    "+19585550199", // "from" number
    "+19588675309", // "to" number
    "Your access code is " . $code
);</code>

Kod di atas adalah untuk ilustrasi sahaja. Dalam permohonan sebenar anda, anda mungkin ingin mempertimbangkan untuk menambah yang berikut:

  • Tambahkan pautan untuk menghantar semula kod pengesahan ke telefon pengguna.
  • Jika pengguna memutuskan untuk tidak meneruskan proses, tambahkan unlink ke borang permintaan kod. Mengenai kod di atas, pautan sedemikian perlu tidak disengajakan $_SESSION["username"] kerana nilai bertindak sebagai bendera "pengesahan separa" untuk $_SESSION["isAuthenticated"] selain menyimpan nama pengguna.
  • Jika kod yang salah disediakan, tambahkan kunci pendikit atau akaun.
  • Log masuk peristiwa pengesahan di suatu tempat bergantung pada tahap paranoia atau keperluan pematuhan yang anda hadapi. (Apl yang memerlukan pengesahan pelbagai faktor biasanya cukup sensitif untuk memerlukan jejak audit!)

Di samping itu, anda mungkin ingin mempertimbangkan untuk membuat kod pengesahan yang cukup kompleks untuk tujuan anda. Kod 4 digit sangat biasa, tetapi anda tidak terhad kepada itu. Jika anda memilih untuk menggunakan campuran huruf atau nilai alfanumerik, saya cadangkan mengelakkan nilai -nilai yang mengelirukan (seperti nombor 0 dengan huruf O, nombor 1 dengan huruf I, dll.).

Ringkasan

Populariti peranti mudah alih yang berpatutan dan telefon IP telah menambahkan saluran lain untuk berinteraksi dengan pengguna, dan dalam artikel ini anda mempelajari cara untuk memanfaatkan saluran ini dengan menggunakan perkhidmatan "komunikasi awan", perkhidmatan "komunikasi awan", Untuk memanfaatkan saluran ini dengan membolehkan pengesahan multi-faktor ,. Saya harap anda dapati artikel ini membantu dalam memahami pengesahan multifaktor dan Twilio. Jangan ragu untuk memberi komen di bawah untuk berkongsi bagaimana anda boleh menggunakan Twilio dalam aplikasi anda sendiri atau melaksanakan pengesahan multi-faktor. Saya suka mendengar apa yang anda fikirkan!

(gambar dari fotolia)

FAQs (FAQs) pada Pengesahan Multi-Faktor dengan PHP dan Twilio

  • Betapa selamatnya menggunakan PHP dan Twilio untuk pengesahan multi-faktor?

Pengesahan Multifactor (MFA) sangat selamat dengan PHP dan Twilio. Ia menambah lapisan keselamatan tambahan dengan menghendaki pengguna menyediakan sekurang -kurangnya dua cara pengesahan sebelum mengakses akaun mereka. Borang pertama biasanya kata laluan, dan borang kedua boleh menjadi kod yang dihantar ke telefon pengguna melalui mesej teks. Walaupun mereka mempunyai kata laluan, ini menjadikannya lebih sukar bagi pengguna yang tidak dibenarkan untuk mengakses akaun mereka.

  • Bolehkah saya menyesuaikan proses pengesahan?

Ya, anda boleh menyesuaikan proses pengesahan untuk memenuhi keperluan anda. API Twilio sangat fleksibel dan membolehkan anda menyesuaikan proses pengesahan kepada keperluan khusus anda. Anda boleh memilih jenis faktor kedua (seperti mesej teks, panggilan suara atau e -mel), kandungan mesej, dan banyak lagi.

  • Betapa boleh dipercayai Twilio untuk menghantar kod pengesahan?

Twilio adalah platform yang boleh dipercayai untuk menghantar kod pengesahan. Ia mempunyai infrastruktur yang kuat dan memberikan kadar penghantaran yang tinggi. Ia juga menyediakan laporan penghantaran masa nyata supaya anda dapat menjejaki status mesej.

  • Bagaimana jika pengguna kehilangan telefonnya?

Jika pengguna kehilangan telefonnya, mereka masih boleh mengakses akaun mereka menggunakan kod alternatif. Kod -kod ini dijana apabila menubuhkan MFA dan harus disimpan di tempat yang selamat. Pengguna boleh memasukkan kod ini dan bukannya kod yang dihantar ke telefon mereka.

  • Bolehkah saya menggunakan MFA dengan PHP dan Twilio untuk aplikasi besar?

Ya, anda boleh menggunakan MFA dengan PHP dan Twilio untuk aplikasi besar. Infrastruktur Twilio direka untuk mengendalikan sejumlah besar mesej, menjadikannya sesuai untuk aplikasi dengan sejumlah besar pengguna.

  • Bagaimana untuk menguji pelaksanaan MFA?

Anda boleh menguji pelaksanaan MFA anda dengan membuat akaun ujian dan menyelesaikan proses pengesahan. Twilio juga menyediakan persekitaran kotak pasir di mana anda boleh menguji kod anda tanpa menghantar mesej sebenar.

  • Adakah mungkin untuk melaksanakan MFA tanpa pengekodan?

Walaupun sesetengah penyelesaian MFA boleh digunakan untuk pengkodan, melaksanakan MFA menggunakan PHP dan Twilio memerlukan pengetahuan pengekodan. Walau bagaimanapun, prosesnya mudah dan terdapat banyak sumber untuk membantu anda.

  • Berapa kos untuk menggunakan Twilio untuk MFA?

Kos menggunakan Twilio untuk MFA bergantung kepada bilangan mesej yang anda hantar. Caj Twilio melalui mesej, jadi semakin banyak mesej yang anda hantar, semakin tinggi yuran. Walau bagaimanapun, Twilio menawarkan harga yang kompetitif dan diskaun batch.

  • Bolehkah saya menggunakan MFA dengan PHP dan Twilio untuk aplikasi bukan web?

Ya, anda boleh menggunakan MFA dengan PHP dan Twilio untuk aplikasi bukan web. Anda boleh melaksanakan MFA dalam sebarang aplikasi yang boleh menghantar permintaan HTTP dan memproses respons HTTP.

  • Apa perkhidmatan lain yang ditawarkan Twilio?

Selain MFA, Twilio juga menawarkan pelbagai perkhidmatan komunikasi termasuk suara, video, sembang dan e -mel. Perkhidmatan ini boleh digunakan untuk membina pelbagai aplikasi, dari sistem perkhidmatan pelanggan ke alat pemasaran automasi.

Atas ialah kandungan terperinci PHP Master | Pengesahan pelbagai faktor dengan PHP dan Twilio. 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