java - 如何确保服务端的接口调用安全?
ringa_lee
ringa_lee 2017-04-18 10:55:00
0
5
862

服务端提供各种功能接口供客户端调用,那么怎样才能确保请求是来自合法的客户端,而不是非法的请求呢?

ringa_lee
ringa_lee

ringa_lee

membalas semua(5)
阿神

Sahkan token atau gunakan rangka kerja OAuth2 di bahagian pelayan

刘奇

Bagaimana anda mentakrifkan undang-undang dan haram? Di bawah rangka kerja SSO, jika anda mempunyai token, anda akan pergi ke sisi Jika ia adalah pihak ketiga, anda pasti memerlukan appid dan appsecret Jika anda memerlukan kebenaran, anda juga perlu membawa AccessToken sisi. Cara paling mudah ialah menulis pemintas IP untuk hanya membenarkan IP yang dipercayai untuk lulus , tetapi ia digunakan untuk pemintasan peringkat tinggi bagi panggilan bersama dalaman Secara umumnya, jika pihak lain menyediakan token atau appecret sah kan?

小葫芦

Apabila mereka bentuk API, untuk memastikan keselamatan API RESTful, tiga aspek utama harus dipertimbangkan:

1. Keizinan log masuk untuk sumber terhad
2. Pengesahan identiti untuk permintaan
3

1. Kebenaran log masuk untuk sumber terhad
Proses ini bukan fokus artikel ini dan tidak akan diterangkan secara terperinci Proses asas adalah seperti berikut:


    Pelanggan menyerahkan maklumat akaun (nama pengguna + kata laluan) ke pelayan
  1. Pelayan berjaya mengesahkan dan mengembalikan AccessToken kepada klien untuk simpanan
  2. 3. Apabila mengakses sumber terhad, pelanggan boleh mengaksesnya dengan membawa AccessToken.


  3. 2. Minta Pengesahan
Jika permintaan tidak ditandatangani dan disahkan, anda boleh menangkap data dengan mudah melalui alat seperti fiddler, mengusiknya, menyerahkannya dan membuat panggilan kelompok berskala besar, yang akan menyebabkan sistem untuk menjana banyak sampah Sejumlah besar data dan sumber sistem digunakan, malah tidak boleh digunakan secara normal (selain itu, sudah tentu, arus boleh dihadkan melalui GateWay), jadi kami perlu melakukan pengesahan tandatangan pada permintaan.


Format URL

URL:schema://domain/path?query&imei×tamp&sign


Penerangan parameter

Kaedah tandatangan

tanda=tandatangan(path?query&imei×tamp&SIGN_KEY)

Proses pengesahan

Logik pengesahan

1 Pada mulanya, pelayan mempunyai SIGN_KEY bagi setiap versi Apl, dan klien mempunyai versi SIGN_KEY yang sepadan
2 Sulitkan dan dapatkan tanda
3 Apabila menghantar permintaan, hantarkannya ke pelayan bersama-sama dengan tanda
4 Pelayan terlebih dahulu mengesahkan sama ada cap waktu itu sah dianggap tidak sah tidak wujud, simpan dalam redis (cache selama 5 minit)

Cara mengelakkan gangguan data
Parameter tandatangan termasuk semua parameter permintaan asal Jika mana-mana parameter ditukar, nilai tanda akan berbeza, jadi ia tidak boleh diusik.

Cara mencegah serangan ulang tayang

Memandangkan algoritma tandatangan juga mempunyai imei (ID peranti unik) dan parameter cap waktu, dan algoritma tandatangan ialah algoritma tidak boleh balik (seperti md5 atau sha1), nilai tanda untuk setiap permintaan biasa tidak Akan berulang. Pada masa ini, pelayan boleh menyimpan nilai tanda 5 minit untuk pengesahan dan penapisan semasa serangan main semula. Permintaan yang melebihi 5 minit ditapis secara langsung oleh pengesahan cap waktu.

Ringkasan

Dengan cara ini, pengesahan permintaan dicapai untuk mengelakkan pengubahan data dan serangan main semula, tetapi adalah perlu untuk memastikan storan kunci Apl (SIGN_KEY) selamat. Kelebihannya ialah ia mudah difahami dan melaksanakannya, tetapi kelemahannya ialah ia perlu memikul tanggungjawab menyimpan kunci dengan selamat dan beban mengemas kininya secara berkala.

3. Penyulitan data sensitif

1) Gunakan infrastruktur SSL (iaitu HTTPS Semua penghantaran data sensitif adalah berdasarkan SSL.
2) Hanya menyulitkan beberapa data sensitif (seperti nombor akaun + kata laluan), dan tambah beberapa nombor rawak sebagai garam penyulitan untuk mengelakkan data daripada diganggu.

PHPzhong

Kami menggunakan algoritma penyulitan RSA Parameter data permintaan ditukar kepada json dan kemudian sijil RSA pelayan digunakan untuk menyulitkan json Permintaan http sudah mencukupi dan kunci peribadi pelayan dinyahsulitkan

大家讲道理

Gunakan oauth2 atau token serupa

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!