Alamat proksi yang sah tidak menjadikan mesej SOCKS tulisan tangan sah. Menghantar struct C atau C++ boleh menghantar padding atau integer dalam susunan hos yang tidak pernah diminta protokol.

Untuk permintaan SOCKS5 CONNECT dengan nama domain, serialkan urutan ini secara eksplisit selepas rundingan kaedah dan sebarang pengesahan yang dipilih:

  1. Versi, arahan, bait simpanan dan jenis alamat
  2. Panjang domain dan bait domain
  3. Port destinasi dua bait dalam susunan bait rangkaian

Panjang alamat bergantung pada versi SOCKS dan jenis alamat. Medan berangka lebar tetap memerlukan perwakilan yang ditetapkan; rentetan domain mempunyai pengekodan panjangnya sendiri. Penamat rentetan C bukan arahan umum untuk menambah sifar pada mesej wayar.

Jalan pintas pelaksanaanMasalah untuk diperiksa
Memberi nilai 32-bit melalui penuding 8-bitIa tidak mengeluarkan keempat-empat bait
Meng-cast penimbal kepada penuding integer yang lebih besarPenjajaran dan susunan bait masih perlu dikendalikan
Menganggap satu baca atau tulis ialah satu mesejTCP hanya boleh memindahkan sebahagian urutan protokol

Bandingkan setiap medan dengan destinasi yang dimaksudkan dan kendalikan I/O separa. Menerima dua bait tidak membuktikan keseluruhan balasan telah tiba. Memeriksa sempadan itu boleh membezakan permintaan cacat daripada pelayan yang menolak sambungan yang diterangkan dengan betul.

Artikel berkaitan