Trong lịch sử, mô-đun php-clamav đã được sử dụng cho việc này. Tuy nhiên hiện tại nó không hỗ trợ PHP 7. x. Bây giờ PHP 7. x đã bắt đầu được sử dụng trong môi trường sản xuất, chúng tôi không muốn xây dựng trên bất kỳ thứ gì không tương thích với các phiên bản mới nên đã quyết định loại bỏ mô-đun này. Một số tìm kiếm trên Google dẫn đến một số tùy chọn khác không tương thích ngay lập tức với CodeIgniter hoặc nhà soạn nhạc bắt buộc và tất cả những thứ nhạc jazz đó. Bất kỳ ai biết chúng tôi đều biết chúng tôi cảm thấy thế nào khi kéo theo hàng đống phụ thuộc cho các nhiệm vụ đơn giản
Vì vậy, tôi bắt đầu tạo đúng thứ chúng tôi cần, một thư viện đơn giản để quét các tệp từ PHP bằng ClamAV. Lớp này có thể được sử dụng dưới dạng thả xuống trong thư viện CodeIgniter hoặc lớp độc lập trong bất kỳ mã PHP nào. Thư viện có tên là php-clamav-scan và có thể tải xuống từ tài khoản GitHub của chúng tôi. https. //github. com/kissit/php-clamav-scan
Yêu cầu
Sự phụ thuộc duy nhất để sử dụng lớp này là mô-đun/tiện ích mở rộng PHP Sockets cần được cài đặt. Điều này đã được bao gồm trong hầu hết các bản cài đặt hoặc có sẵn để cài đặt dễ dàng thông qua trình quản lý gói hệ thống
Hơn nữa, Clamd phải được cấu hình với các kết nối ổ cắm được kích hoạt
Định cấu hình ổ cắm Clad
Trước tiên, thư viện này hiện chỉ hoạt động nếu Clamd được cài đặt trên cùng một máy chủ với ứng dụng PHP và đã bật tệp ổ cắm của nó. Đây thường là cấu hình mặc định cho ClamAV. Vì đây là tất cả những gì chúng tôi cần vào thời điểm đó nên chúng tôi không bao gồm chức năng kết nối với Clamd qua mạng mặc dù điều này có thể dễ dàng được thêm vào. Chúng tôi rất vui khi làm như vậy nếu có ai cần điều này, chỉ cần cho chúng tôi biết tại đây
Để bật [hoặc thay đổi] giao tiếp của ổ cắm trong clash, chỉ cần chỉnh sửa clad của bạn. conf để bật tùy chọn LocalSocket. Đây là đường dẫn ổ cắm mặc định mà thư viện sử dụng. Hãy chắc chắn khởi động lại clash nếu thay đổi được thực hiện
# Path to a local socket file the daemon will listen on.
LocalSocket /var/run/clamav/clamd.sock
Sử dụng lớp trong PHP độc lập
Đầu tiên, tải lớp về vị trí mong muốn của bạn. Ví dụ
wget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
Sau đó, yêu cầu/bao gồm nó khi cần thiết
require 'Clamav.php';
Sau đó, chỉ cần khởi tạo một thể hiện của nó. Nếu đường dẫn ổ cắm của bạn khác, bạn có thể chuyển nó vào dưới dạng tùy chọn. Đường dẫn socket mặc định là /var/run/clamav/clamd. bít tất
$clamav = new Clamav[];
- OR -
$clamav = new Clamav[array['clamd_sock' => '/path/to/clamd.sock']];
Cuối cùng, chạy quét từng tệp khi cần
if[$clamav->scan["/path/to/file/to/scan.txt"]] {
echo "YAY, file is safe!";
} else {
echo "BOO, file is a virus!";
}
Sử dụng lớp làm thư viện CodeIgniter
Bất kỳ ai quen thuộc với CodeIgniter đều biết rằng cấu trúc của họ có các yêu cầu cụ thể để sử dụng thư viện tùy chỉnh. Lớp này tương thích với CodeIgniter
Đầu tiên, tải lớp về thư mục ứng dụng/thư viện của bạn. Ví dụ
$ wget -O application/libraries/ //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
Tải thư viện nơi mong muốn. Nếu đường dẫn ổ cắm của bạn khác, bạn có thể chuyển nó vào dưới dạng tùy chọn. Đường dẫn socket mặc định là /var/run/clamav/clamd. bít tất
$this->load->library['clamav'];
- OR -
$this->load->library['clamav', array['clamd_sock' => '/path/to/clamd.sock']];
Cuối cùng, chạy quét từng tệp khi cần
if[$this->clamav->scan["/path/to/file/to/scan.txt"]] {
echo "YAY, file is safe!";
} else {
echo "BOO, file is a virus!";
}
Sự kết luận
Tóm lại, tôi hy vọng ai đó thấy thư viện này hữu ích. Như đã đề cập ở trên, nếu ai đó cần quét các tệp trên mạng, thì việc thêm sẽ rất đơn giản và chúng tôi rất sẵn lòng làm như vậy nếu được yêu cầu, vì vậy vui lòng liên hệ với chúng tôi nếu có bất kỳ câu hỏi hoặc thắc mắc nào về bài đăng này
Duyệt qua các thư mục cho các tệp có phần mở rộng php và kiểm tra tệp theo quy tắc văn bản hoặc biểu thức chính quy, quy tắc dựa trên các mẫu tự thu thập và phần mềm độc hại/vỏ web có sẵn công khai. Mục đích là tìm ra các file bị nhiễm virus và chống lại bọn trẻ con, vì quá dễ lách luật
Nhật ký thay đổi v1. 0. 23
Mẫu kịch bản cửa hậu
Tải xuống
bản sao git https. //github. com/scr34m/php-máy quét phần mềm độc hại. git
Sử dụng
Đối số bỏ qua có thể được sử dụng nhiều lần và chấp nhận kết hợp kiểu toàn cục cũ. “bộ đệm*”, “??-bộ đệm. php” hoặc “/cache”, v.v.
Đối số mở rộng mặc định là “.php
” và cũng có thể được sử dụng nhiều lần
--base64
là một chế độ quét thay thế bỏ qua các tệp mẫu chính và sử dụng một danh sách lớn các từ khóa và hàm php đã được chuyển đổi thành base64. Chậm hơn và dễ bị sai, nhưng cung cấp thêm phạm vi quét base64. Các tệp mẫu này được đặt trong base64_patterns và được lấy từ các từ khóa và hàm php 7. Không có nhiều phần mở rộng PHP được bao gồm- Cờ
wget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
0 sẽ hiển thị nhận xét cuối cùng xuất hiện trong tệp mẫu trước mẫu phù hợp, vì vậy việc ghi lại các tệp mẫu là rất quan trọng
định dạng đầu ra
Đầu ra mặc định tùy thuộc vào các tham số đã chỉ định, nhưng định dạng đầy đủ là “%S %T %M # {%F} %C %P # %L” và cũng sử dụng màu ANSI
Các biến có thể là
wget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
1 – chỉ báo phù hợp, các giá trị có thể là OK, ER, WLwget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
2 – thời gian thay đổi tệpwget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
3 – giá trị băm tệp md5wget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
4 – tệp có đường dẫnwget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
5 – mẫuwget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
6 – nhận xét mẫuwget //raw.githubusercontent.com/kissit/php-clamav-scan/master/Clamav.php
7 – số dòng mẫu phù hợp
hoa văn
Có ba tệp mẫu chính bao gồm các loại khớp mẫu khác nhau. Có một mẫu trên mỗi dòng. Tất cả các dòng có ký tự đầu tiên là “--base64
0” được coi là một nhận xét và không được sử dụng làm mẫu. Khoảng trắng trong tệp mẫu không được sử dụng