TsgcWebSocketHTTPServer › Özellikler › SecurityOptions
Handshake kabul kurallarını tanımlar: izin verilen kökenler, RFC 6455 handshake doğrulaması ve HSTS yanıt başlıkları.
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Name | Varsayılan | Açıklama |
|---|---|---|
OriginsAllowed | "" | Tarayıcı WebSocket handshake'leri için kabul edilen kökenlerin virgülle ayrılmış izin listesi. Boş bırakılması tüm kökenlere izin verir. |
EnforceWebSocketVersion | True | Sec-WebSocket-Version'ı 13 olmayan bir RFC 6455 handshake'ini reddeder. |
ValidateWebSocketKey | True | Sec-WebSocket-Key'i geçerli bir 16 baytlık base64 nonce olmayan bir RFC 6455 handshake'ini reddeder. |
HSTS_Options.Enabled | False | Strict-Transport-Security yanıt başlığını etkinleştirir. Bkz. Remarks. |
HSTS_Options.MaxAge | 31536000 | Başlığın max-age yönergesi için saniye cinsinden değer (varsayılan bir yıldır). SSL Labs, A+ derecelendirmesi için en az 15552000 (altı ay) gerektirir. |
HSTS_Options.IncludeSubDomains | False | Başlığa includeSubDomains ekler. Yalnızca her alt alan adı HTTPS üzerinden sunuluyorsa etkinleştirin. |
HSTS_Options.Preload | False | Başlığa preload ekler. Yalnızca tarayıcıların HSTS preload listesine gönderilen alan adları için etkinleştirin. |
Sunucunun hangi origin'lerden WebSocket handshake'leri kabul ettiğini kısıtlamak için OriginsAllowed'ı kullanın. Varsayılan olarak tüm origin'lere izin verilir; boş olmayan herhangi bir değer bir beyaz listeyi etkinleştirir ve sunucu, Origin başlığı eşleşmeyen bağlantıları kapatır. Kalıplar port için joker karakterleri kabul eder (örneğin tek bir origin için http://127.0.0.1:5555 veya o host'taki herhangi bir portu kabul etmek için http://127.0.0.1:*). Birden fazla origin'i virgülle ayırın. OriginsAllowed'ı boş bir dizeye ayarlamak izin verici varsayılanı geri yükler.
EnforceWebSocketVersion ve ValidateWebSocketKey WebSocket yükseltmesinin kendisini güçlendirir ve varsayılan olarak etkindir. EnforceWebSocketVersion etkin olduğunda, sunucu 13 dışında bir sürüm isteyen bir handshake'e yükseltmeyi tamamlamak yerine HTTP 426 Upgrade Required ve bir Sec-WebSocket-Version: 13 başlığı ile yanıt verir. ValidateWebSocketKey etkin olduğunda, sunucu, RFC 6455 tarafından gerektirildiği üzere Sec-WebSocket-Key'i eksik olan veya 16 bayta çözülen 24 karakterlik bir base64 değeri olmayan herhangi bir handshake'i HTTP 400 Bad Request ile reddeder. Her iki kontrol de yalnızca RFC 6455 yoluna uygulanır, bu nedenle eski Hixie76 istemcileri etkilenmez. Yalnızca uyumsuz bir istemciyle birlikte çalışmanız gerekiyorsa ikisinden birini False olarak ayarlayın.
Aynı seçenekler TsgcWebSocketServer ve http.sys sunucusu TsgcWebSocketServer_HTTPAPI üzerinde de mevcuttur. Gelen mesajların boyutunu sınırlamak için MaxMessageSize'a bakınız.
HSTS_Options, RFC 6797 tarafından tanımlanan Strict-Transport-Security yanıt başlığını denetler. Enabled True olduğunda, TLS üzerinden gönderilen her HTTP/1.1 ve HTTP/2 yanıtı, MaxAge, IncludeSubDomains ve Preload'dan oluşturulan bir Strict-Transport-Security başlığı içerir, örneğin Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. Başlık asla düz HTTP üzerinden gönderilmez, uygulama yanıt üzerinde zaten bir Strict-Transport-Security başlığı ayarlamışsa atlanır ve yanıt başlıklarını uygulamanın kendisi yazdığı durumlarda (streaming) eklenmez. HSTS_Options yalnızca bu bileşende ve TsgcHTTPServer üzerinde kullanılabilir; TsgcWebSocketServer veya http.sys sunucusu TsgcWebSocketServer_HTTPAPI üzerinde hiçbir etkisi yoktur.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.SecurityOptions.HSTS_Options.Enabled := true;
oServer.SecurityOptions.HSTS_Options.MaxAge := 31536000;
oServer.Active := true;