2012-05-24 29 views

Trả lời

5

Không theo mặc định, không.

Nó sẽ luôn cung cấp một số hình thức bảo vệ chống lại các cuộc tấn công nghe trộm đơn giản vì dữ liệu sẽ luôn được mã hóa (miễn là máy chủ SSL mà bạn đang kết nối để cho phép sử dụng ít nhất một mật mã được mã hóa) được cho phép trong các kết nối HTTPS: roll-eyes :) Tuy nhiên, theo mặc định, nó sẽ không bảo vệ chống lại man-in-the-middle vì nó không xác nhận chứng chỉ của máy chủ, do đó bạn không thể tự tin rằng bạn đã kết nối với máy chủ dự định.

Xác thực chứng chỉ có thể được bật. Để làm như vậy, bạn sẽ cần cung cấp gói chứng chỉ gốc và sử dụng đối số thứ tư cho fopen cho phép bạn chỉ định ngữ cảnh luồng. Luồng luồng cho phép bạn sửa đổi hành vi của luồng. Chuyển đổi ví dụ bên dưới làm cho chứng chỉ được xác thực dựa vào chứng chỉ gốc trong tệp bó được chỉ định.

$context = stream_context_create(array(
    'ssl' => array(
     'cafile'  => 'ca_bundle.crt', 
     'verify_peer' => true 
    ) 
)); 

$file = fopen($url, 'r', false, $context); 
+0

Một điều bổ sung bạn có thể muốn làm là hạn chế tập hợp mật mã cho phép chỉ cho phép các hình thức mã hóa mạnh. Mật mã có sẵn mạnh nhất (cho phép bởi cả máy khách và máy chủ) nên được sử dụng theo mặc định; tuy nhiên, nếu bạn thực sự kén chọn, bạn có thể muốn từ chối các kết nối đến các máy chủ không hỗ trợ mức mã hóa đủ cao. Nếu có ai biết cách thực hiện điều này trong PHP, vui lòng đăng bài. – Cheekysoft

Các vấn đề liên quan