Blog: Alter World

Виртуальный мир является своеобразным Alter Ego мира реального…

Элементарный аудит кода

Комментариев нет 8 мая 2010, 19:23 • BSD, Linux, Плагины и моды, Идея, Веб

Зачастую нужно проводить аудит кода на сайте (написанный на PHP или еще каком языке — не столь важно) и делать это можно разными способами. Самый элементарный и простой аудит кода можно сделать при помощи простого скрипта на bash'е.

Идея такого аудита состоит в следующем: тело скриптов не должно изменяться в процессе работы. Если же тело скрипта изменилось, то значит был осуществлен взлом сайта. При условии, что сами вы эти скрипты не правили. Выяснить, изменялось ли тело скриптов за определенный промежуток времени можно путем сравнения текущих файлов с теми, что были ранее. Лично я сделал сравнение md5-хэшей, что для большинства случаев будет достаточно.

Допустим, что весь ваш сайт находится в папке /home/username/public_www и написан он на PHP. Сделаем в /home/username папку audit и в ней файл last.info и дадим им права на запись только хозяину. Скрипт www-audit.sh в таком случае будет элементарным (написано для Linux, для *BSD нужно будет немного поправить пути):
#!/bin/sh
#
# Security check files on www-hosting
#

CDATE=`/bin/date +%Y%m%d`
SFILE="/home/username/audit/last.info"
PFILE=`cat $SFILE`
CFILE="/home/username/audit/"$CDATE".md5"
/bin/touch $CFILE

/usr/bin/find /home/username/public_www/ -type f -name '*.php' | \
( while read f; do
/bin/echo `/usr/bin/md5sum $f` >> $CFILE
done
)

/bin/echo $CFILE > $SFILE
/bin/echo "Diff files: $PFILE and $CFILE"
/usr/bin/diff $PFILE $CFILE

Если теперь этот скрипт запускать в cron'е раз в сутки, то на почту будет приходить уведомление со списком измененных файлов.

Комментариев нет

Вы можете подписаться на комментарии к этой статье через RSS или отправить к ней TrackBack.

Оставить свое мнение

XHTML: Вы можете использовать эти тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>