Post_1sПривет, в сегодняшней публикации будет размещена информация о еще одной проблеме безопасности, которая часто встречаются в РНР проектах.

А именно как защитится от Cross Site Scripting, а также о таком понятии, как внешний файл РНР-документов.

Как правило, файл или страницы РНР заканчиваются расширением (.php), и отправляются РНР веб-сервером Apache. В таком случае код РНР не возможно посмотреть или быть даступным пользователям.

Внешний файл РНР-документа.

Код скрытый и это одна из основных особенностей языков программирования server-side scripting, которым и является РНР. Однако может возникнуть такая ситуация, что модуль РНР или Apache могут дать сбой. И тогда код отобразится на экране.

Для безопасности приложений РНР, это явно нежелательна ситуация. Во-первых если исходный код видим, то очень просто найти уязвиме место в безопасности приложений РНР.

Кроме того, некоторые скрипты содержат файлы конфигурации, даже в корне веб-сервера. Это опасная ситуация, если принять во внимание тот факт, что посетитель, введет в браузер адрес сервера РНР, и имя файла конфигурации (по умолчанию php.ini), тогда будет возможность получить доступ к данному файлу, через интернет-браузер.

Конечно возникает вопрос, что необходимо для этого сделать, чтобы сделать сервер РНР безопасным. Все достаточно просто, заключается в способе расположения файлов РНР. Так как в предыдущих публикациях говорилось что все документы по «корня документа» РНР могут отображаться в браузере и могут быть доступны посетителям, нам необходимо всего навсего переместить все эти документы в другие места.

Ниже приведен фрагмент РНР, включенный в файл конфигурации РНР, который сузит доступ посетителю.

/ aplication

/ controlers

/ models

/ views

/ library

/ Public_html <- document root

/ index.php

/ media

/ images

/ JavaScript

/ css

/ config

/ cache

/ tmp

/public_index.php

/ logs

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

Cross Site Scripting 

Cross Site Scripting иногда называют XSS, является еще одной проблемой безопасности, которая часто встречается в РНР-проектах. Эта проблема возникает, когда содержание, введенный пользователем, используется приложением для того чтобы снова отразиться на экране.

Чаще всего Cross Site Scripting работает тогда, когда в коде HTML представлен JavaScript.

пример

Возьмем себе в пример форум. На форуме пользователи могут отправлять сообщения, которые могут видеть другие пользователи. В качестве технологии нам необходимо применить JavaScript для того чтобы послать сообщение, и HTML для того чтобы придать им форму, и отформатировать их.

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

Одна из вредных вещей, которые они могут сделать, это ввести JavaScript в настоящее РНР код.

Результат может оттолкнуть пользователя данного сайта. Данный способ позволяет напрямую создать неудобства посетителям форума путем генерирования бесконечными сообщение, чтобы пользователь закрыл страницу и пошел на другой веб-сайт.

Данный пример — это простой случай, когда рассматриваемая атака невредоносна. Но при желании злоумышленников это может быть очень плохо, потому что может привести к установкм keylogger (англ. Key — «клавиша» logger «регистрационный устройство») — программа или аппаратное устройство, которое регистрирует каждую нажать клавишу на клавиатуре компьютера.

И таким образом может выдать имена пользователей и пароли с сервера или компьютеров посетителей.

Как защититься от Cross Site Scripting

Как и в случае SQL Injection, защититься от Cross Site Scripting достаточно легко. Лучшим способом чтобы решить данную проблему является замена всех тегов (<>), полученных по умолчанию от пользователя, на соответствующие & — последовательности, (&lt; и &gt;).

Для того чтобы справиться с такой задачей необходимо использовать функцию php htmlentities_ (). Эта функция легко и просто превратит символы в соответствующие HTML.

Например теги HTML начинаются с символов «<«. Используя функцию предъявлено выше, этот символ превратится в &lt;

Если, например с форума мы хотим представить возможность посетителям форматировать содержимое форума, по умолчанию использовать HTML для форматирования текста. Применить данную процедуру в чистом виде невозможно, поэтому необходимо найти альтернативное решение.

Для того чтобы получить возможность реализовать данное решение, нам необходимо познакомиться с bbCode (сокращенно англ. Bulletin Board Code  — «популярный язык разметки, используемый при форматировании сообщений на форумах, блогах, на страже» ). Язык bbCode обладает синтаксисом, очень похожим на HTML, и учитывая этот факт если вы используете HTML не вызовет трудностей

в использовании.

Некоторые примеры использования bbCode.


BBCODE: [B] полужирным текст [/ B]

HTML <STRONG> полужирний текст </ STRONG>

РЕЗУЛЬТАТ полужирний текст


BBCODE: [И] текст курсивом [/ i]

HTML <em> текст курсивом </ em>

РЕЗУЛЬТАТ текст курсивом


BBCODE: [u] подчеркнутый текст [/ u]

HTML: <SPAN стиль = «текст-отделка: подчеркнуть»> підкреслений текст </ SPAN>

РЕЗУЛЬТАТ подчеркнутый текст


BBCODE: [s] зачеркнутый текст [/ s]

HTML: <SPAN стиль = «текст-отделка: линейный throut»> закреслений текст </ SPAN>

РЕЗУЛЬТАТ зачеркнутый текст


BBCODE: [quote] цитата [/ quote]

HTML <BLOCKQUOTE> ЦИТАТА </ BLOCKQUOTE>

РЕЗУЛЬТАТ ЦИТАТА


BBCODE: [URL = HTTP: //ruszura.in.ua] Зура-Блог [/ URL]

HTML: <a HREF =»http://ruszura.in.ua»> Зура-блог </a>

РЕЗУЛЬТАТ ссылки на сайт Zura-Blog


BBCODE: [IMG] = HTTP: //ruszura.in.ua/img.jpg [/ IMG]

HTML: <IMG SRC = «http://ruszura.in.ua/img.jpg»> />

РЕЗУЛЬТАТ картинка.

Используя BBCODE мы можем защититься от XSS

.