2010-07-05 31 views
5

Có cách nào đơn giản để phát hiện nếu mod_security được cài đặt & được bật chỉ sử dụng PHP không? Lý tưởng nhất là không có bất kỳ lệnh exec() terminal type nào được thực hiện.Phát hiện nếu Mod_Security được cài đặt với PHP?

Một số người đã đề xuất sử dụng apache_get_modules() nhưng máy chủ web cụ thể này không cho phép hiển thị. Điều này cũng được đề cập bởi những người dùng khác tại đây: http://www.devcomments.com/apache_get_modules-solution-to130703.htm

Trả lời

4

Hãy thử apache_get_modulesfunction để nhận một loạt các mô-đun đã tải. Nếu mô-đun được nạp nhưng không được liệt kê ở đó, bạn có thể muốn thử phpinfo với phpinfo(INFO_MODULES) thay vì:

ob_start(); 
phpinfo(INFO_MODULES); 
$contents = ob_get_clean(); 
$moduleAvailable = strpos($contents, 'mod_security') !== false; 
+1

Cần lưu ý điều này có thể được thực hiện chỉ khi PHP được cài đặt như một mô-đun Apache. – Artefacto

+0

Chức năng này dường như không hoạt động chính xác cho tất cả các máy chủ. Một số máy chủ xuất hiện để không trả lại tất cả các mod apache bằng cách sử dụng chức năng này vì một số lý do. Một bài đăng khác trên đó: http://www.devcomments.com/apache_get_modules-solution-to130703.htm Bất kỳ ý tưởng nào khác? – user384030

2

Nắm bắt tại ống hút ở đây.

Hãy thử yêu cầu tập lệnh của bạn tự thực hiện (thông qua file_get_contents hoặc có thể là tiện ích mở rộng cURL) sẽ chuyển sang chế độ mod_security. Nếu nó trả về một 403 (hoặc bất kỳ phản ứng mặc định mod_security là), nên có đủ thông tin để bạn có thể đi về ...

3

bạn có thể làm chỉ là tạo một file test.php và sử dụng ..

<?php phpinfo(); ?> 

và nhìn vào apache2handler, và tìm kiếm tại địa chỉ: module Loaded .. một cái gì đó như thế này ...

http://gyazo.com/bcba303469f23671f7213e1478788cbd.png

-Mike

+2

Điều này dường như không hoạt động đối với PHP-FPM, trong trường hợp này không có khối Apache2handler – vrijdenker

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