Saya memiliki server ekspres Node.js yang dikerahkan ke AWS EBS, sisi klien, yang ditulis dalam React dikerahkan ke bucket S3 sebagai halaman web statis.

Saya sedang mengerjakan semacam sistem pendaftaran ke layanan tertentu, dan saya tidak ingin meminta kredensial dari pengguna, jadi saya kira csrf \ jwt tidak akan berfungsi.

Apakah ada cara untuk memblokir semua permintaan http dari asal selain klien? saat ini, ada kemungkinan seseorang hanya akan menggunakan Postman dan membuat permintaan ke server saya, misalnya membuat pengguna hanya dengan email.

Saya mencoba menggunakan API Gateway pribadi, tetapi saya tidak dapat menemukan cara agar klien berhasil membuat permintaan. Saya berpikir untuk mengenkripsi muatan permintaan http, tetapi saya tetap tidak menemukan untuk menyimpan kunci pribadi di tempat yang tidak terlihat oleh siapa pun melalui browser ...

1
Itai Soudry 2 Februari 2020, 17:04

2 jawaban

Jawaban Terbaik

Asal hanyalah header HTTP yang dapat disetel seseorang, yaitu "spoof", dalam permintaan Postman mereka. Anda dapat memeriksa asal untuk memblokir bot pemindai acak, tetapi itu tidak akan memblokir siapa pun yang ditentukan. Jadi tolong jangan bingung ini sebagai keamanan yang sebenarnya. Anda dapat melakukan ini dengan AWS Web Application Firewall yang terpasang pada penyeimbang beban EB Anda, atau hanya menambahkan tanda centang di middleware ekspres Anda seperti pada jawaban lainnya.

Mengenai Gateway API pribadi, itu tidak akan pernah berfungsi dalam skenario ini, itu hanya untuk sumber daya di dalam jaringan VPC, dan aplikasi React Anda berjalan di browser web orang di Internet publik.

Mengenai seseorang yang membuat akun pengguna "hanya dengan email" yang harus Anda tangani, Anda harus benar-benar memvalidasi permintaan di sisi server, dengan pengetahuan bahwa permintaan tersebut mungkin berasal dari seseorang yang menggunakan alat seperti Postman karena tidak ada cara untuk benar-benar mencegahnya dalam skenario Anda.

Jika Anda ingin menggunakan API Gateway untuk ini, Anda dapat mencoba menerapkan minta validasi di sana. Anda juga dapat melampirkan Firewall Aplikasi Web ke API Gateway. Saya yakin Anda juga bisa melakukan pemeriksaan tajuk Asal sebagai bagian dari validator permintaan Gateway API.

1
Mark B 2 Februari 2020, 15:49

Anda tidak dapat memblokir semua permintaan HTTP tetapi pasti dapat menolak dengan menambahkan middleware

app.use((req, res, next) => {
  if(req.protocol === 'http' && req.hostname!== <client domain>){
    return res.sendStatus(403);
  } next();
})
1
AZ_ 2 Februari 2020, 14:46