หนึ่งในไซต์ยอดนิยมของ Alexa (วงกลมกลาง) ปลอดภัยโดย HTTPS พร้อมโดเมนย่อย (สีเทา) และการอ้างอิง (สีขาว) ซึ่งมีช่องโหว่ (แรเงาเส้นประ)
ทุกวันนี้ ไอคอนการเชื่อมต่อที่ปลอดภัย HTTPS ได้กลายเป็นมาตรฐานและแม้แต่คุณลักษณะที่จำเป็นของไซต์ที่ร้ายแรงใดๆ ถ้า
แต่ปรากฎว่าการมี "ล็อค" ในแถบที่อยู่ไม่ได้รับประกันการป้องกันเสมอไป
ผลการศึกษา
การศึกษาดำเนินการโดยผู้เชี่ยวชาญจากมหาวิทยาลัยเวนิส Ca' Foscari (อิตาลี) และมหาวิทยาลัยเทคนิคเวียนนา พวกเขาจะนำเสนอรายงานโดยละเอียดที่การประชุม IEEE Symposium on Security and Privacy ครั้งที่ 40 ซึ่งจะจัดขึ้นในวันที่ 20-22 พฤษภาคม 2019 ในซานฟรานซิสโก
มีการทดสอบไซต์ HTTPS 10 อันดับแรกของ Alexa และโฮสต์ที่เกี่ยวข้อง 000 รายการ ตรวจพบการกำหนดค่าการเข้ารหัสที่มีช่องโหว่บนโฮสต์ 90 โฮสต์ นั่นคือประมาณ 816% ของทั้งหมด:
- 4818 เสี่ยงต่อ MITM
- 733 เสี่ยงต่อการถอดรหัส TLS เต็มรูปแบบ
- 912 เสี่ยงต่อการถอดรหัส TLS บางส่วน
ไซต์ 898 ไซต์เปิดให้แฮ็กได้อย่างสมบูรณ์ นั่นคืออนุญาตให้แทรกสคริปต์ภายนอก และไซต์ 977 ไซต์โหลดเนื้อหาจากเพจที่มีการป้องกันไม่ดีซึ่งผู้โจมตีสามารถโต้ตอบได้
นักวิจัยเน้นย้ำว่าในบรรดาแหล่งข้อมูล 898 แห่งที่ “ถูกบุกรุกโดยสมบูรณ์” ได้แก่ ร้านค้าออนไลน์ บริการทางการเงิน และเว็บไซต์ขนาดใหญ่อื่นๆ 660 จาก 898 ไซต์ดาวน์โหลดสคริปต์ภายนอกจากโฮสต์ที่มีช่องโหว่: นี่คือแหล่งที่มาหลักของอันตราย ผู้เขียนกล่าวว่าความซับซ้อนของเว็บแอปพลิเคชันสมัยใหม่จะเพิ่มพื้นผิวการโจมตีอย่างมาก
นอกจากนี้ยังพบปัญหาอื่นๆ อีก: 10% ของแบบฟอร์มการอนุญาตมีปัญหาเกี่ยวกับการส่งข้อมูลที่ปลอดภัย ซึ่งขู่ว่ารหัสผ่านจะรั่วไหล 412 ไซต์อนุญาตให้สกัดกั้นคุกกี้และการไฮแจ็คเซสชัน และ 543 ไซต์อาจถูกโจมตีเพื่อความสมบูรณ์ของคุกกี้ (ผ่านโดเมนย่อย) .
ปัญหาคือในช่วงไม่กี่ปีที่ผ่านมาโปรโตคอลและซอฟต์แวร์ SSL / TLS
การตั้งค่าที่แนะนำ
ไม่มีใครได้รับการอนุมัติอย่างเป็นทางการและเห็นด้วยกับรายการการตั้งค่า HTTPS ที่แนะนำ ดังนั้น,
โหมดทันสมัย
ไคลเอนต์ที่รองรับที่เก่าแก่ที่สุด: Firefox 27, Chrome 30, IE 11 บน Windows 7, Edge, Opera 17, Safari 9, Android 5.0 และ Java 8
server {
listen 80 default_server;
listen [::]:80 default_server;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# modern configuration. tweak to your needs.
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver <IP DNS resolver>;
....
}
การสนับสนุนปานกลาง
ไคลเอนต์ที่รองรับที่เก่าแก่ที่สุด: Firefox 1, Chrome 1, IE 7, Opera 5, Safari 1, Windows XP IE8, Android 2.3, Java 7
server {
listen 80 default_server;
listen [::]:80 default_server;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /path/to/dhparam.pem;
# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver <IP DNS resolver>;
....
}
การสนับสนุนเก่า
ไคลเอนต์ที่รองรับที่เก่าแก่ที่สุด: วินโดวส์ XP IE6, Java 6
server {
listen 80 default_server;
listen [::]:80 default_server;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /path/to/dhparam.pem;
# old configuration. tweak to your needs.
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP';
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver <IP DNS resolver>;
....
}
ขอแนะนำให้คุณใช้ชุดการเข้ารหัสแบบเต็มและ OpenSSL เวอร์ชันล่าสุดเสมอ ชุดการเข้ารหัสในการตั้งค่าเซิร์ฟเวอร์ระบุลำดับความสำคัญที่จะใช้ ขึ้นอยู่กับการตั้งค่าไคลเอ็นต์
การวิจัยแสดงให้เห็นว่าการติดตั้งใบรับรอง HTTPS เท่านั้นไม่เพียงพอ "แม้ว่าเราจะไม่จัดการกับคุกกี้เหมือนที่เราทำในปี 2005 และ 'TLS ที่เหมาะสม' กลายเป็นเรื่องธรรมดา แต่กลับกลายเป็นว่าสิ่งพื้นฐานเหล่านี้ไม่เพียงพอที่จะรักษาความปลอดภัยของไซต์ยอดนิยมจำนวนมากได้อย่างน่าประหลาดใจ"
ที่มา: will.com