Nginx Tambahkan Bendera Aman ke Cookie dari server yang diproksi


12

Mozilla baru saja merilis alat baru untuk memeriksa konfigurasi situs web Anda. observatory.mozilla.org

Tetapi pemindaian mengeluhkan tentang Cookie (-10 poin): Cookie sesi ditetapkan tanpa tanda Secure ...

Sayangnya layanan yang berjalan di belakang nginx saya hanya dapat mengatur header aman jika SSL berakhir di sana secara langsung dan tidak ketika SSL berakhir di nginx. Dengan demikian bendera "Aman" tidak diatur pada cookie.

Apakah mungkin menambahkan flag "secure" ke cookie dengan menggunakan nginx? Memodifikasi lokasi / jalur sepertinya dimungkinkan.

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path

Jawaban:


11

Saya tahu dua cara untuk melakukan ini, tidak satu pun yang bagus. Yang pertama adalah dengan hanya menyalahgunakan proxy_cookie_path seperti ini:

proxy_cookie_path / "/; secure";

Yang kedua adalah menggunakan direktif more_set_headers dari modul Headers More seperti ini:

more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure';

Kedua hal ini dapat menimbulkan masalah karena mereka menambahkan item secara membabi buta. Misalnya, jika upstream menetapkan flag aman Anda akan berakhir mengirim duplikat seperti ini kepada klien:

Set-Cookie: foo=bar; secure; secure;

dan dalam kasus kedua jika aplikasi hulu tidak menetapkan cookie, nginx akan mengirimkan ini ke browser:

Set-Cookie; secure;

Ini adalah doublebleplusungood, tentu saja.

Saya pikir masalah ini perlu diperbaiki karena banyak orang bertanya tentang hal itu. Menurut saya direktif diperlukan sesuatu seperti ini:

proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;

tapi sayangnya, saat ini tidak ada :(


Jalur cookie benar-benar terlihat seperti solusi yang bagus. Saya pikir saya akan mencobanya terlebih dahulu. Terima kasih atas bantuan Anda.
ST-DDT

1
Saya mengajukan permintaan fitur di forum; semoga penulis tertarik akan hal itu.
Franklin Yu

3

Coba gunakan nginx_cookie_flag_module . Itu akan menyelesaikan masalah Anda.

Penafian: Saya adalah penulis modul.


3
Bisakah Anda menguraikan bagaimana modul ini diatur dan dikonfigurasi. README tampaknya menyarankan bahwa ia membutuhkan pembangunan kembali nginx, yang mungkin tidak dapat diterima di banyak pengaturan.
Thomas Nyman

Ya, penggunaan modul ini membutuhkan pembangunan kembali Nginx. Kalau tidak, Anda tidak bisa menggunakan arahan itu. Ini berlaku untuk semua modul pihak ketiga. Dalam banyak kasus, pembangunan kembali nginx tidak memakan banyak waktu.
Airis

@ThomasNyman Membangun kembali dapat dihindari dengan membayar untuk NGINX Plus, seperti yang dijelaskan dalam instruksi dari NGINX .
Franklin Yu

1
@Airis Jadi, Anda penulisnya? Kerja bagus, sobat, tapi lebih baik menambahkan disclaimer.
Franklin Yu

@Aris kami mencoba menggunakan modul dengan versi 1.17.1 dari ngnix: alpine, tetapi kami menghadapi kesalahan setelah kami mencoba memuat modul ke nginx.conf. 'module "/usr/local/nginx/modules/ngx_http_cookie_flag_filter_module.so" tidak kompatibel dengan biner'
Lokesh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.