PDA

Просмотр полной версии : Контроль целостности файлов сайта


dondy
25.07.2015, 00:16
есть ли нормальные сканеры которыми можно сделать список хешей всех файлов и папок - и проверять файлы на изменения хеша и появление новых "не всписке" файлов на хостинге ?

b3
25.07.2015, 00:37
Есть разного рода сервисы http://habrahabr.ru/company/santi/blog/202976/ но я ими никогда не пользовался. Делай бэкап и делай слепок мд5суммы файлов, сверяй кроном ежедневно и если че делай дифф файлов. В принципе все просто.

dondy
25.07.2015, 23:02
вариант делать слепок бэкапа хороший, но долгий, иногда скорость неочень высокая что бы скачать копии

я вот скрипт один когда то в сети нашёл, немного его доделал, но здесь нет возможности показа новых файлов, которые появились после обновления снимка хэш сумм.

скрипт удобный, но я не знаю как прикрутить сюда фитчу - что бы показывал новые файлы на хостинге.

Помогите пожалуйста кто в php силен, что можно дописать сюда?


$val) @fwrite($md5_from_file,"$val\t$key\n");
}

functionchecker(){
global$md5_file,$xmail,$adminPassword;
$i=1;

if (!file_exists($md5_file)) {
write_md5();
}

if ($_POST['updatemd5'] ) {
if (md5(trim($_POST['password'])) ==$adminPassword) {
write_md5();
//выполняем скрипт замены д аты и времени
$select_file_touch=$md5_file;
if (!touch($select_file_touch,strtotime('2014-09-15 18:21:37'))) {
echo'Упс, что-то пошло не так... дата фа ла не исправлена';
} else {
// echo 'Модификация време и и даты файла прошла ус ешно!
Папка / Файл: '.$select_file_touch.'';
}
//конец выполнения скрипта
} else {
echo'Неверный п роль';
}
}

$md5=dir_md5();
if (file_exists($md5_file)) {
$md5_from_file=file($md5_file);

if ( !$md5_from_file) {
write_md5();
$md5_from_file=file($md5_file);
}


$mailBody="";
$error="";
while (list($ln,$line) =each($md 5_from_file))
{
list($md,$ff) =explode("\t",trim($line));
if ($md!=$md5[$ff]) {
$ff=str_replace(ABSPATH,'/',$ff);
$ff=str_replace('//','/',$ff);
$error.="
$i.$ff- изменен";
if (file_exists($_SERVER['DOCUMENT_ROOT'].$ff)) {
} else {
echo'Файл '.$ff.' отсутствует!
';
}
$mailBody.="
$i.$ff- изменен"."\r\n";
$i++;


}
}

//if($mailBody != "" && $_GET['send'] == 1) @mail($xmail['adminMail'], $xmail['subject'], $mailBody, $xmail['headers']);//отправить на почту
}

if ($_GET['send'] !=1) {
if ($i==1) {
echo"
Всё ок!";
} else {
echo$error;
}

echo'




пароль:


';
}
}

functiondir_md5() {
global$md5,$allowDir;
if($allowDir!=""){
find_md5(ABSPATH,0);
$aDir=explode("|",$allowDir);
while (list($key,$dir) =each($aD ir)){
find_md5(ABSPATH.'/'.$dir,1);
}
}else{
find_md5(ABSPATH,1);
}
return$md5;
}

functionfind_md5($path,$recurs) {
global$md5,$allowExt,$skipDir,$skipFile,$s kipFileGlobal;

if ($skipDir!=""andpreg_match("#$skipDir$#i",$path))$skip=1;

if ($dir= @opendir($path) and$skip!=1 ) {

while($file=readdir($dir)) {
if ($file=='.'or$file=='. .') continue;

if (!in_array($file,$skip FileGlobal)) {

$file=$path.'/'.$file;
if (is_dir($file) &&$recurs) {
find_md5($file,1);
}


if (!in_array($fi le,$skipFile)) {
if (is_fi le($file) &&preg_match("/$allowExt/i",$file)) {
$md5[$file] =md5(join('',file($file)));
}
}
}
}
closedir($dir);
}
}

checker();
?>

b3
26.07.2015, 17:20
жесть на пхп да еще не под CLI ты реально жжош

altblitz
26.07.2015, 17:39
↑ (https://antichat.live/posts/3872718/)
вариант делать слепок бэкапа хороший, но долгий, иногда скорость неочень высокая что бы скачать копии
я вот скрипт один когда то в сети нашёл, немного его доделал, но здесь нет возможности показа новых файлов, которые появились после обновления снимка хэш сумм.
скрипт удобный, но я не знаю как прикрутить сюда фитчу - что бы показывал новые файлы на хостинге.
Помогите пожалуйста кто в php силен, что можно дописать сюда?


Скрипт удобный. Но неправильный.

Обрабатываются запросы на стороне сервера, а результаты присылаются клиенту - это раз.

Технические огрехи в коде скрипта - это два:

header('Content-Type: text/html; charset=UTF-8');

$xmail['headers'] = 'MIME-Version: 1.0' . "\r\n".'Content-type: text/html; charset=windows-1251'