


Bagaimana untuk Menentukan Versi TLS yang Dirundingkan dalam Aplikasi .NET?
Jan 10, 2025 am 08:14 AMTentukan versi TLS yang dirundingkan
Apabila memulakan jabat tangan rangkaian melalui TLS, ia selalunya bernilai untuk tujuan penyahpepijatan atau pengelogan untuk menentukan versi TLS tertentu yang telah dipersetujui. Artikel ini meneroka cara untuk mendapatkan maklumat ini agar sesuai dengan pelbagai senario.
Gunakan .NET Reflection API
Untuk aplikasi .NET yang dijalankan pada Framework 4.7 atau lebih tinggi, kaedah berikut memanfaatkan refleksi untuk mengakses TlsStream asas dan mengekstrak protokol TLS yang dirundingkan:
using System.Net; using System.Reflection; using System.Security.Authentication; // 獲取與網(wǎng)絡(luò)請(qǐng)求關(guān)聯(lián)的TLS流 using (var requestStream = request.GetRequestStream()) { // 利用反射訪問TLS流的屬性 var tlsStream = requestStream.GetType() .GetProperty("Connection", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(requestStream); var tlsState = tlsStream.GetType() .GetProperty("NetworkStream", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(tlsStream); var sslProtocol = (SslProtocols)tlsState.GetType() .GetProperty("SslProtocol", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(tlsState); // 處理協(xié)商的TLS協(xié)議(例如,日志記錄或顯示) }
Gunakan panggilan balik pengesahan sijil pelayan
Pendekatan lain melibatkan penggunaan ServerCertificateValidationCallback, yang dipanggil apabila sambungan TLS diwujudkan. Begini cara kaedah ini disepadukan:
using System.Net; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; // 設(shè)置ServerCertificateValidationCallback ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => { // 獲取TLS協(xié)議版本 var sslProtocol = ((SslStream)sender).SslProtocol; // 處理協(xié)商的TLS協(xié)議(例如,日志記錄或顯示) return true; // 回調(diào)也可以用于證書驗(yàn)證,此處作為一個(gè)示例顯示。 };
Gunakan .NET Security DLL
Akhir sekali, teknik lanjutan melibatkan penggunaan kaedah QueryContextAttributesW dalam secur32.dll untuk mengakses atribut konteks keselamatan. Kaedah ini boleh memberikan maklumat yang lebih terperinci tentang sambungan selamat yang telah ditetapkan.
using System; using System.Runtime.InteropServices; [DllImport("secur32.dll", CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = false)] private static extern int QueryContextAttributesW( IntPtr contextHandle, ContextAttribute attribute, ref SecPkgContext_ConnectionInfo connectionInfo); public enum ContextAttribute { // 獲取TLS協(xié)議版本 SecPkgContext_ConnectionInfo = 0x9 } public struct SecPkgContext_ConnectionInfo { public SchProtocols dwProtocol; // 其他屬性也可以用于獲取有關(guān)密碼和哈希算法的信息 }
Nota: Kaedah ini memerlukan akses kepada sifat dan medan bukan awam, menjadikannya kaedah yang kurang langsung.
Dengan melaksanakan teknologi ini, pembangun boleh mendapatkan semula versi TLS yang dirundingkan untuk sambungan HttpWebRequest dan TcpClient, membolehkan mereka menangkap maklumat berharga untuk penyahpepijatan dan pengelogan.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Versi TLS yang Dirundingkan dalam Aplikasi .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ya, kelebihan fungsi adalah bentuk polimorfik dalam C, khususnya polimorfisme kompilasi masa. 1. Kelebihan fungsi membolehkan pelbagai fungsi dengan nama yang sama tetapi senarai parameter yang berbeza. 2. Pengkompil memutuskan yang berfungsi untuk memanggil pada masa penyusunan berdasarkan parameter yang disediakan. 3.

C mempunyai dua jenis polimorf utama: polimorfisme kompilasi masa dan polimorfisme jangka masa. 1. Polimorfisme masa kompilasi dilaksanakan melalui fungsi overloading dan templat, memberikan kecekapan yang tinggi tetapi boleh menyebabkan kod kembung. 2. Polimorfisme runtime dilaksanakan melalui fungsi maya dan warisan, memberikan fleksibiliti tetapi overhead prestasi.

Ya, polimorfisme di C sangat berguna. 1) Ia menyediakan fleksibiliti untuk membolehkan penambahan mudah jenis baru; 2) Menggalakkan penggunaan semula kod dan mengurangkan pertindihan; 3) Memudahkan penyelenggaraan, menjadikan kod lebih mudah untuk berkembang dan menyesuaikan diri dengan perubahan. Walaupun terdapat cabaran pengurusan prestasi dan memori, kelebihannya amat penting dalam sistem yang kompleks.

C destructorscanleadtoSeveralCommonerrors.toavoidthem: 1) pencegahandoubledeletionbysettingpointerstonullptrorusingsmartpointers.2)

Orang yang belajar python pemindahan ke c kekeliruan yang paling langsung adalah: Mengapa anda tidak boleh menulis seperti python? Kerana C, walaupun sintaks lebih kompleks, menyediakan keupayaan kawalan asas dan kelebihan prestasi. 1. Dari segi struktur sintaks, C menggunakan pendakap kerinting {} dan bukannya lekukan untuk mengatur blok kod, dan jenis pembolehubah mesti diisytiharkan secara eksplisit; 2. Dari segi sistem jenis dan pengurusan ingatan, C tidak mempunyai mekanisme pengumpulan sampah automatik, dan perlu menguruskan memori secara manual dan memberi perhatian kepada melepaskan sumber. Teknologi RAII boleh membantu pengurusan sumber; 3. 4. Dari segi perpustakaan standard, STL menyediakan bekas dan algoritma yang kuat, tetapi perlu menyesuaikan diri dengan idea pengaturcaraan generik; 5

Polimorfisme dalam C dibahagikan kepada polimorfisme runtime dan polimorfisme kompilasi masa. 1. Polimorfisme runtime dilaksanakan melalui fungsi maya, yang membolehkan kaedah yang betul dipanggil secara dinamik pada masa runtime. 2. Polimorfisme masa kompilasi dilaksanakan melalui fungsi overloading dan templat, memberikan prestasi dan fleksibiliti yang lebih tinggi.

C Polymorphisminkludescompile-time, runtime, andtemplatePolymorphism.1) compile-timePolymorphismusesfunctionandoperatoroveroveroverfiency.2) runtimepolymorphismemplempemplemplorfuntionsflonflexibility.3) TemplatePolymorphismenabenabenabenabenabenaben

C Polymorphismisuniqueduetoitscombinationofcompile-timeandruntimePolymorphism, membolehkanforbotheficiencyandflexibility.toharnessitspowerstylishly: 1) menggunakanmartpointerslikestd :: unik_ptrformemorymanagement, 2)
