Stack
Я хочу сканировать каждый файл, который загружается через мою php-загрузку script с помощью средства clamscan для антивируса clam. Я думаю, что у меня хороший script, но я хотел запустить его мимо вас, ребята.
Итак, если предположить, что файл, который я отправляю на эту загрузку php script, называется "uploadedfile", имеет ли смысл следующий код?
<?php
$safe_path = escapeshellarg('/tmp/' . $_FILES['uploadedfile']['tmp_name']);
$command = 'clamscan ' . $safe_path;
$out = '';
$int = -1;
exec($command, $out, $int);
if ($int == 0) {
// all good, code goes here uploads file as normal IE move to
permanent directory etc;
} else {
unlink('/tmp/' . $_FILES['uploadedfile']['tmp_name']);
header(Location: http://www.domain.com/uploadform.php?error=your-file-was-infected-pal);
}
?>
Также, clamscan найдет php-оболочки, а также традиционные старые добрые вредоносные программы?
Спасибо!
Обновить - нашел ответ
Я ответил на свой вопрос, но у меня нет репутации официально. Вот ансер:
Для тех, кто придет после. Я протестировал этот script с помощью тестового вирусного файла EICAR http://eicar.org/86-0-Intended-use.html и после нескольких настроек он работает. Возвращаемая переменная $int - это то, что говорит вам, безопасен ли файл или нет. Если $int равно 0, вирус не был найден, если $int равен 1, вирус был найден. Тем не менее, есть некоторые изменения, которые мне пришлось сделать для работы script (я обновил переменную $safe_path, чтобы быть прав), вот рабочий script:
<?php
$safe_path = escapeshellarg($_FILES['uploadedfile']['tmp_name']);
$command = 'clamscan ' . $safe_path;
$out = '';
$int = -1;
exec($command, $out, $int);
if ($int == 0) {
// all good, code goes here uploads file as normal IE move to
permanent directory etc;
} else {
//whatever you need to do if a virus is found.
}
?>