25
Такая схема позволяет разгрузить тяжелый Apache от
статических
запросов,
перенеся
раздачу
статического
содержимого на nginx, а в случае обращений к динамическому
содержимому nginx выступает в качестве посредника между
пользователем и бэкендом в виде Apache.
Такое посредничество
дает значительный прирост в производительности засчет
скорости отдачи содержимого от бэкенда к фронтенду в
отличии от прямой отдачи от Apache к пользователю. Ведь у
большинства пользователей Интернет-‐каналы не позволяют
забирать содержимое со скоростью,
равной генерации
содержимого, поэтому происходит ситуация, когда в один
момент запущено множество httpd-‐процессов, занимающих
большое количество серверных ресурсов.
Введя в классическую схему фронтенд в виде nginx, мы
получили выигрыш во времени работы httpd-‐процессов, ведь
теперь Apache передает не ограниченному в Интернет-‐канале
пользователю, а легкому веб-‐серверу nginx, связь с которым
позволяет отдавать содержимое в сотни раз быстрее.
Таким
образом апач на каждый запрос занят не 10 секунд, а 0.1
секунду, и процессов httpd будет запущено не 1000, а 10. [13]
Ответ при этом буферезируется в nginx, но объем ответа
обычно в несколько раз меньше, чем объем процесса на бэкенде
(httpd+perl, PHP или даже Java), который этот ответ создал,
поэтому память будет очень заметно экономится.
4.4.4.
Противодействие SQL-‐инъекциям и XSS-‐атакам
Внедрение
SQL-кода
(SQL-инъекция)
–
один
из
распространённых способов
взлома сайтов и программ,
26
работающих с базами данных, основанный на внедрении в
запрос произвольного SQL-‐кода.
Внедрение SQL-‐кода, в зависимости от типа используемой
СУБД и условий внедрения, может дать возможность
атакующему выполнить произвольный
запрос к базе данных
(например, прочитать содержимое любых таблиц, удалить,
изменить или добавить данные), получить возможность чтения
и/или записи локальных файлов и выполнения произвольных
команд на атакуемом сервере. [16]
Поэтому важно избавить злоумышленника от такой
возможности. Для обеспечения безопасности исполняемых SQL-‐
запросов был использован объект Zend_Db, входящий в Zend
Framework – свободный каркас для создания веб-‐приложений и
веб-‐сервисов от
разработчиков языка PHP, а также
дополнительные функции приведения входных данных к
корректному виду, такие как addslashes, производящая
экранирование спецсимволов.
XSS – тип уязвимости интерактивных информационных
систем в вебе.
XSS возникает, когда в генерируемые сервером
страницы по какой-‐то причине попадают пользовательские
скрипты. Специфика подобных атак заключается в том, что
вместо непосредственной атаки сервера они используют
уязвимый сервер в качестве средства атаки на клиента. [17]
Для обеспечения невозможности
проведения
XSS-‐
атак
был
проведен ряд
предупреждающих мероприятий, таких как
экранирование данных при вводе и выводе с помощью
addslashes и удаление html-‐тегов при вводе с помощью функции
strip_tags.
27
Для фильтрации и приведения данных к безопасному виду
используются классы каркаса Zend Framework,
такие как
Zend_Filter_StringTrim, в частности, содержащаяся в нем
функция filter():
$filter = new Zend_Filter_StringTrim();
$email = $filter-‐>filter($email);
$password = $filter-‐>filter($password);
и пр.
Эти и многие другие аспекты безопасности реализуются с
помощью элементов каркаса Zend Framework, что позволяет
обеспечить
защищенность
веб-‐проекта
«Электронный
дневник» на достаточном уровне.
Достарыңызбен бөлісу: