(Pertanyaan hadiah di bagian bawah)
Saya mengalami masalah dengan klien yang mengakses situs kami, dan penyebab utamanya adalah bahwa WAF (Web Application Firewall) tidak menyukai string Agen-Pengguna mereka:
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:34.0; C7QcSBPWTsrpX5YLvVZMqiujEZLWPtOYk3tDZ9WhW18=) Gecko/20100101 Firefox/34.0
Dalam hal ini, string yang dikodekan base64 memicu false positive dalam WAF yang menganggap User-Agent adalah libwww-perl. String base64 tidak men-decode ke teks yang dapat dibaca.
- Apakah memiliki string yang dikodekan base64 di dalam User-Agent normal atau tidak biasa?
- Apakah penggunaan string base64 di dalam Agen-Pengguna dilindungi oleh RFC atau praktik vendor utama?
Saya mencoba memahami apa yang terjadi di sini; Saya tidak merasa tanda tangan WAF benar-benar keluar dari jalur ke objek, jadi saya lebih suka tidak hanya menonaktifkannya, tapi saya belum pernah melihat string User-Agent semacam ini sebelumnya, jadi saya lebih mengerti lebih baik bagaimana umum dan / atau kasus penggunaan yang sah ini.
Situs ini dirancang untuk digunakan oleh manusia dengan browser - ini bukan API atau semacamnya - dan telah dilaporkan kepada saya bahwa pengguna telah mencoba mengakses situs dengan "FF / IE / Chrome" dan gagal. Namun, saya menunjukkan koneksi yang berhasil dari IP klien yang sama dengan agen-pengguna Opera:
User-Agent: Opera/9.80 (X11; Linux i686) Presto/2.12.388 Version/12.16
Agak aneh bahwa pengguna melaporkan telah mencoba IE tetapi semua string User-Agent yang saya lihat tampaknya Linux. (Seperti biasa, kontak dengan pengguna akhir dimediasi melalui beberapa pihak sehingga saya tidak dapat sepenuhnya mempercayai apa pun yang saya dengar). Kemungkinan juga IP adalah sisi keluar dari proxy web kelas bisnis, yang akan menjelaskan mengapa saya melihat beberapa Opera bekerja untuk seseorang sementara orang lain melaporkan masalah dari IP yang sama.
Memperbarui
Terinspirasi oleh contoh @PlanetScaleNetworks, saya mencari-cari di Google string dan dari sana akhirnya menggunakan UA Tracker untuk mencari string base64 (atau, subset dari mereka yang berlapis - saya mencari "=)"). Ini mengembalikan sekitar 20 Agen-Pengguna:
Saya akan menambahkan hadiah untuk pertanyaan ini, dan ruang jawaban yang saya cari adalah "jenis perangkat lunak apa yang meletakkan string base64 ke dalam User-Agent, dan mengapa? Dan apakah ada cap legitimasi untuk praktik ini? "
Titik kecil:
Pengguna telah mengatasi masalah kami dengan menggunakan plugin browser untuk memodifikasi User-Agent mereka, jadi ini sekarang merupakan masalah akademis - tapi saya pikir ini adalah masalah akademis yang menarik :)