Rumah  >  Soal Jawab  >  teks badan

java - 如何确保服务端的接口调用安全?

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

ringa_leeringa_lee2742 hari yang lalu869

membalas semua(5)saya akan balas

  • 阿神

    阿神2017-04-18 10:57:00

    Sahkan token atau gunakan rangka kerja OAuth2 di bahagian pelayan

    balas
    0
  • 怪我咯

    怪我咯2017-04-18 10:57:00

    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?

    balas
    0
  • 高洛峰

    高洛峰2017-04-18 10:57:00

    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.

    balas
    0
  • PHPz

    PHPz2017-04-18 10:57:00

    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

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:57:00

    Gunakan oauth2 atau token serupa

    balas
    0
  • Batalbalas