2012-07-09 41 views
5

Biến PHP $ _SERVER ['SERVER_NAME'] có được giả mạo hoặc giả mạo không? Tôi đã lên kế hoạch sử dụng nó như một biện pháp an ninh cho việc đăng tải biểu mẫu. Tôi sẽ kiểm tra để đảm bảo biến đó là tên trang web của tôi (www.example.com). Tôi biết HTTP_REFERRER có thể bị giả mạo, nhưng tôi không chắc chắn về điều này.

Cảm ơn!

+1

Không có vấn đề gì nó sẽ luôn luôn giống nhau .. máy chủ của bạn. Không phải máy chủ mà yêu cầu đến từ đó. – sachleen

Trả lời

2

Không thể giả mạo, phân rã, nhưng nó sẽ luôn trả lại tên trang web của bạn. Nó rất hữu ích nếu bạn đang chạy nhiều trang web ra khỏi cùng một tập lệnh và, ví dụ, sử dụng một cơ sở dữ liệu khác nhau tùy thuộc vào tên máy chủ được cung cấp.

Các PHP documentation nói:

'SERVER_NAME' 
    The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. 
+3

Bạn đang bối rối 'SERVER_NAME' với' HTTP_HOST'. – BalusC

3

Với khách truy cập, thông thường, khách hàng không được giả mạo. Nhưng tôi nghi ngờ bạn sẽ muốn thực thi một SERVER_NAME nhất định cho các tập lệnh cấp phép để chúng chỉ có thể được sử dụng bởi các miền cụ thể. Trong trường hợp này câu trả lời là có, biến này chắc chắn có thể được giả mạo.

Lý do rất đơn giản, máy chủ đặt giá trị này. Trong hầu hết các trường hợp, bạn sẽ có PHP chạy như một mô-đun Apache, nhưng đôi khi bạn có các mô-đun Apache khác, đôi khi bạn có PHP đang chạy trong chế độ CGI với NGINX hoặc IIS, đôi khi bạn thậm chí có PHP đang chạy như CLI được chia thành một tiến trình con bằng một tùy chỉnh -built máy chủ được triển khai trong một đám mây. Những máy chủ đó sẽ chịu trách nhiệm thiết lập biến đó.

Ngoài ra, luôn có nhiệm vụ thủ công.

$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts 
Các vấn đề liên quan