Защита Web-приложений. Учебное пособие
.pdfпользователей. Это лучший вариант, если ваша организация |
|
|||||
должна управлять большими объемами конфиденциальных |
|
|||||
данных, имеет юридические требования для защиты данных |
|
|||||
или просто не нуждается в гибкости использования облачного |
|
|||||
хранилища. |
|
|
|
|
|
|
Разрешить неконтролируемый доступ |
|
|
|
|||
Вы можете игнорировать проблемы, связанные с |
|
|||||
использованием |
облачного |
хранилища. Однако |
такая |
|
||
политика открывает для вашей организации потерю данных, |
|
|||||
утечку данных и другие виды проблем. К сожалению, многие |
|
|||||
организации |
в |
настоящее время используют этот подход, |
|
|||
потому |
что |
контроль |
доступа |
пользователей |
ста |
|
чрезвычайно сложным, а организации не хватает средств для |
|
|||||
использования какого-либо другого подхода. |
|
|
|
|||
Использовать корпоративный доступ |
|
|
|
|||
Если вам |
требуется, чтобы |
пользователи обращались к |
|
|||
облачному хранилищу с использованием учетной записи |
|
||||||||
компании, |
вы |
|
можете, по |
крайней |
мере, отслеживать |
|
|||
использование файлов и иметь средства для восстановления |
|
||||||||
данных после ухода сотрудника. Однако основные проблемы |
|
||||||||
с |
облачным |
|
хранилищем |
остаются. Хакер, обладающий |
|
||||
необходимыми знаниями, может получить доступ к учетной |
|
||||||||
записи и |
получить ваши |
данные. Этот вариант работает |
|
||||||
хорошо, если ваша организация не управляет данными с |
|
||||||||
юридически необходимыми средствами защиты, и вы готовы |
|
||||||||
обменять безопасность на удобство. |
|
|
|
|
|||||
|
Контроль доступа в приложении |
|
|
|
|
||||
|
Многие облачные сервисы поддерживают API, который |
|
|||||||
позволяет |
|
уникальным |
образом |
взаимодействовать |
с |
||||
сервисом. Хотя этот подход довольно трудоемкий, он дает |
|
||||||||
преимущество, |
|
позволяя |
вам |
контролировать, где |
|
||||
пользователь хранит конфиденциальные данные, в |
то |
же |
|
||||||
время предоставляя пользователю гибкость в использовании |
|
||||||||
облачного хранилища для менее конфиденциальных данных. |
|
||||||||
Вы |
должны |
рассмотреть |
это |
решение, когда |
вашей |
|
|||
организации |
|
|
необходимо |
взаимодействовать |
с |
большим |
|
||
21
количеством |
партнеров, |
а |
также необходимо |
управлять |
||||||
большими объемами конфиденциальных данных. |
|
|
||||||||
Положитесь на стороннее решение |
|
|
|
|
||||||
Вы |
можете |
найти |
сторонние решения, такие как |
|
||||||
Accellion, |
которые |
|
предоставляют |
услуги |
облачного |
|||||
хранилища. |
|
Поставщик |
|
предоставляет |
|
сервис, который |
|
|||
выступает в качестве посредника между вашим приложением |
|
|||||||||
и |
онлайн-хранилищем |
данных. Пользователь |
может |
|
||||||
беспрепятственно взаимодействовать с данными, но служба |
|
|||||||||
контролирует |
доступ |
с |
помощью |
установленных |
вами |
|||||
политик. Проблема этого подхода заключается в том, что |
|
|||||||||
теперь |
у |
|
вас |
есть |
дополнительный |
,уровенькоторый |
|
|||
необходимо учитывать при написании приложения. Кроме |
|
|||||||||
того, вы должны доверять третьей стороне, предоставляющей |
|
|||||||||
доступ. Это конкретное решение хорошо работает, когда вам |
|
|||||||||
нужна гибкость без обычных затрат на разработку , и вы не хотите создавать свое собственное решение, основанное на доступе API.
1.5.Использование внешнего кода и ресурсов
Убольшинства организаций сегодня нет времени или ресурсов, необходимых для создания приложений с нуля.
Кроме того, затраты на поддержание такого |
приложения |
|
|||||||||
будут |
огромными. |
|
Чтобы |
|
контролировать |
расходы, |
|
||||
организации |
обычно |
полагаются |
на |
сторонний |
код |
в |
|||||
различных |
|
формах. |
|
Например, |
API (аббревиатура |
от |
|
||||
Application |
|
Programming |
Interface) |
– |
интерфейс |
|
|||||
программирования |
приложений, |
позволяющий |
сервисам |
|
|||||||
взаимодействовать, получать |
|
доступ |
и |
обмениваться |
|||||||
данными. Код выполняет общие задачи, и разработчики |
|
||||||||||
используют его для создания приложений. Однако сторонний |
|
||||||||||
код не обходится без проблем с безопасностью. По сути, вы |
|
||||||||||
зависите от того, кто еще будет писать код приложения, |
|
||||||||||
который не только хорошо работает и |
выполняет |
все |
|||||||||
необходимые вам задачи, но и делает это безопасно. |
|
|
|
||||||||
22
Как и API, микросервисы выполняются в хост-системе. |
|
||||||||||
Вы делаете запрос, и |
микросервис отвечает каким-то |
||||||||||
ресурсом (обычно данными). Однако микросервисы сильно |
|
||||||||||
отличаются от API. Акцент делается на небольшие задачи с |
|
||||||||||
микросервисами – типичный микросервис хорошо выполняет |
|
||||||||||
одну задачу. |
Кроме |
того, |
микросервисы |
обычно |
уделяют |
|
|||||
большое |
|
внимание |
независимости |
платформы. Идея |
|
||||||
заключается в предоставлении сервиса, который может |
|
||||||||||
взаимодействовать с любой платформой любого размера и |
|
||||||||||
любой мощности. При работе с микросервисами необходимо |
|
||||||||||
убедиться, что хост надежен, и что единственная задача, |
|
||||||||||
которую выполняет микросервис, четко определена. Также |
|
||||||||||
важно |
учитывать, |
как |
микросервис |
|
взаимодействует |
с |
|||||
любыми |
данными, |
которые |
вы |
предоставляете, и |
не |
|
|||||
предполагать, что каждый микросервис взаимодействует с |
|
||||||||||
данными одинаково (даже если микросервисы существуют на |
|
||||||||||
одном |
хосте). Использование |
микросервисов |
означает |
|
|||||||
эффективность и способность работать с более широким |
|||||||||||
спектром платформ, но вам также необходимо знать о |
|||||||||||
необходимости дополнительных проверок безопасности. |
|
|
|||||||||
1.6. Исследование сторонних решений безопасности |
|
|
|||||||||
Изобретать |
|
колесо |
всегда |
плохая . |
идеяВполне |
|
|||||
возможно, что кто-то еще уже создал решение безопасности, |
|
||||||||||
которое |
|
достаточно |
хорошо |
|
соответствует |
ваши |
|||||
потребностям, и вы можете использовать его вместо создания |
|
||||||||||
собственного решения безопасности. Стороннее решение |
|
||||||||||
должно отображаться как часть вашего плана безопасности, |
|
||||||||||
чтобы другие знали, что вы имеете в виду это решение. Кроме |
|
||||||||||
того, имея стороннее решение в своем плане, вы можете |
|
||||||||||
включить в него всевозможную информацию и пригласить к |
|
||||||||||
обсуждению решения. |
|
|
|
|
|
|
|
||||
Конечно, прежде чем вы сможете что-либо сделать, вы |
|
||||||||||
должны |
найти |
|
стороннее |
решение, которое |
|
хотите |
|
||||
использовать. |
К |
счастью, |
есть |
методы, которые |
можно |
|
|||||
использовать, |
чтобы |
сократить |
время, |
необходимое |
для |
|
|||||
23
выполнения |
процесса, |
а |
затем |
исследовать |
отдельные |
||||||
решения, |
чтобы |
убедиться, что |
они |
действительно |
|||||||
соответствуют |
вашим |
|
потребностям. Как |
только |
вы |
||||||
обнаружите решения, которые хотите использовать, важно |
|
||||||||||
учитывать плюсы и минусы каждого типа решения. |
|
|
|
||||||||
|
Найти стороннее решение по безопасности может быть |
|
|||||||||
сложно. Введите большинство поисковых терминов, которые |
|
||||||||||
вы можете придумать, в поисковую систему, и вы получите |
|
||||||||||
список индивидуальных решений безопасности, многие из |
|
||||||||||
которых |
могут |
даже |
не |
относиться |
к вашей |
конкретной |
|||||
проблеме. |
|
|
|
|
|
|
|
|
|
|
|
|
Например, |
существует |
помощь |
в |
виде |
сайтов |
|||||
агрегаторов по информационной безопасности, таких как |
|
||||||||||
Capterra. |
Этот |
сайт |
предоставляет |
помощь |
в |
форме |
|||||
фильтрации, которая помогает вам разобраться с различными |
|
||||||||||
поставщиками. Каждая из записей имеет краткий обзор, на |
|
||||||||||
который вы можете нажать, чтобы узнать дополнительную |
|
||||||||||
информацию. |
Во |
многих случаях в обзор также входят |
|||||||||
средства массовой информации, которые могут предоставить |
|
||||||||||
демонстрацию продукта или другую полезную информацию. |
|
||||||||||
Тот |
факт, |
что |
рецензии |
находятся |
в |
одном , |
месте |
||||
отфильтрованы |
по |
|
заданным |
|
вами |
|
критериям |
||||
отформатированы практически одинаково, облегчает процесс |
|
||||||||||
поиска. |
|
|
|
|
|
|
|
|
|
|
|
24
2. МЕТОДЫ КОДИРОВАНИЯ |
|
Современные приложения не существуют в |
вакууме. |
Если бы разработчик создавал каждое приложение |
с нуля, |
этот процесс занял бы неприемлемое количество времени. Использование библиотек, API-интерфейсов и микросервисов
значительно |
ускоряет |
и |
|
упрощает |
процесс |
создания |
||||||
приложения. Кроме |
того, |
поскольку код, |
предоставленный |
|
||||||||
этими |
сторонними |
источниками, подвергается |
|
такому |
||||||||
тщательному анализу, он имеет тенденцию становиться все |
||||||||||||
более |
безопасным, чем |
код, |
который |
вы |
можете |
создать |
||||||
самостоятельно, |
и |
на |
него |
обычно |
быстрее |
приходят |
||||||
обновления. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.1. Создание интерфейса |
|
|
|
|
|
|||||
Важной частью создания работоспособных интерфейсов |
|
|||||||||||
сегодня является их простота. Сложные интерфейсы старого |
|
|||||||||||
образца |
создают |
проблемы |
безопасности, потому |
что |
||||||||
пользователь не уверен, что делать, или, возможно, слишком |
|
|||||||||||
много, |
чтобы |
сделать. |
Доступные |
сегодня |
библиотеки |
|||||||
позволяют |
создавать |
|
четкие |
|
|
интерфейсы, которые |
|
|||||
фокусируются на одной проблеме за раз во многих ситуациях. |
|
|||||||||||
Например, интерфейс с вкладками, показанный на рис. 1, |
|
|||||||||||
предоставляет |
пример |
понятного |
|
интерфейса, который |
|
|||||||
одновременно |
выполняет |
только |
одну |
операцию– выбор |
|
|||||||
цвета фона. |
|
|
|
|
|
|
|
|
|
|
|
|
Этот интерфейс довольно понятен. Он задает выбор, |
|
|||||||||||
предоставляет ограниченное количество ответов и затрудняет |
|
|||||||||||
пользователю ввод неверных данных. Пользователь выбирает |
|
|||||||||||
цвет, нажимает кнопку и переходит к следующей |
вкладке. |
|||||||||||
Ряд Web-приложений |
теперь |
используют |
|
такой |
интерфейс. |
|||||||
Вы могли заметить, что это используется для листов регистрации.
25
Рис. 1. Пример Web-интерфейса
Пример использует библиотеку пользовательского интерфейса jQuery для выполнения своей задачи. Вот исходный код для этого примера:
<!DOCTYPE html> <html>
<head>
<script src="https://code.jquery.com/jquery-latest.js">
</script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js">
</script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.9.2/themes/base/jquer y-ui.css" />
<title>Using the Tabs Widget</title> <style>
#Configuration
{width: 90%; text-align: center;
}
#Configuration div {text-align: left;
}
</style>
<script language="JavaScript"> $(function()
{$("#Configuration").tabs();
26
});
</script>
</head>
<body>
<h1>Using the Tabs Widget</h1>
<form id="ConfigForm" method="get" action="Tabs.html"> <div id="Configuration">
<ul>
<li><a ref="#Tab1">Foreground Color</a></li> <li><a href="#Tab2">Background Color</a></li>
<li><a href="#Tab3">Options</a></li> </ul>
<div id="Tab1"> <input id="FGRed"
type="radio"
name="Foreground"
value="Red" checked="checked" />
<label for="FGRed">Red</label><br /> <input id="FGOrange"
type="radio"
name="Foreground" value="Orange" />
<label for="FGOrange">Orange</label><br /> <input id="FGGreen"
type="radio"
name="Foreground" value="Green" />
<label for="FGGreen">Green</label><br /> <input id="FGBlue"
type="radio"
name="Foreground" value="Blue" />
<label for="FGBlue">Blue</label> </div>
<div id="Tab2"> <input id="BGRed"
type="radio"
name="Background"
value="Red" checked="checked" />
<label for="BGRed">Red</label><br /> <input id="BGOrange"
type="radio"
name="Background" value="Orange" />
<label for="BGOrange">Orange</label><br /> <input id="BGGreen"
type="radio"
name="Background" value="Green" />
<label for="BGGreen">Green</label><br />
27
<input id="BGBlue" type="radio" name="Background" value="Blue" />
<label for="BGBlue">Blue</label> </div>
<div id="Tab3"> <input id="Sounds"
type="checkbox"
name="Sounds" value="SpecialSounds" />
<label for="Sounds">Use Special Sounds</label><br /> <input id="Effects"
type="checkbox"
name="Effects" value="SpecialEffects" />
<label for="Effects">Use Special Effects</label> </div>
</div>
<input id="ChangeConfig" type="submit"
value="Change Configuration" /> </form>
</body>
</html>
Чтобы создать этот интерфейс, нужно импортировать библиотеки jQuery и jQueryUI и связанную таблицу стилей jQueryUI. Информация о вкладке отображается <div>в с идентификатором конфигурации. Простота заключается в использовании для создания интерфейса выполнения вызова $ ("# Configuration"). Tabs ().
2.1.1. Создание гибкого интерфейса
Снижение |
возможности |
пользователя |
вводить |
недопустимые данные, упрощение интерфейса и упрощение |
|
||
его работы – все |
это по-разному ограничивает возможности |
|
|
пользователя. Это |
формы ограничений, |
которые помогают |
|
вам сохранять данные, упрощая задачу взаимодействия пользователя с приложением. Однако интерфейсы также требуют гибкости. Пользователь будет использовать приложение на нескольких устройствах, не все из которых примут первоначальную организацию интерфейса. По возможности интерфейс должен позволять пользователю:
28
Перемещение |
|
|
|
|
|
|
|
|
|
|
|
|||
Перемещение элементов по экрану может предоставить |
|
|||||||||||||
пользователю |
|
лучшее |
|
представление |
|
об |
интерфейсе |
и |
||||||
потенциально уменьшить количество ошибочных входных |
|
|||||||||||||
данных. Как минимум, реорганизация интерфейса позволяет |
|
|||||||||||||
пользователю |
|
взаимодействовать |
с |
приложением |
таким |
|
||||||||
образом, который лучше всего подходит. |
|
|
|
|
|
|
||||||||
Изменение размера |
|
|
|
|
|
|
|
|
|
|
||||
Есть много причин, по которым пользователю может |
|
|||||||||||||
потребоваться |
|
изменить |
размер |
элемента |
интерфейса. |
|||||||||
Возможно, текст – слишком маленький. Сочетание действия |
|
|||||||||||||
изменения |
|
размера |
с |
|
возможностью, предоставляемой |
|
||||||||
большинством браузеров, уменьшать или увеличивать размер |
|
|||||||||||||
текста по мере необходимости, помогает пользователю лучше |
|
|||||||||||||
видеть информацию. |
|
|
|
|
|
|
|
|
|
|
|
|||
Выбор |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выбор |
должен |
обеспечивать |
несколько |
|
способов |
|||||||||
отображения информации, таких как использование более |
|
|||||||||||||
толстых |
границ, |
представление |
выделения |
в |
более |
белом |
|
|||||||
(более ярком) цвете, изменение текстовых атрибутов и цветов |
|
|||||||||||||
интерфейса. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сортировка |
|
|
|
|
|
|
|
|
|
|
|
|||
Пользователь должен видеть данные в определенном |
|
|||||||||||||
порядке, который |
имеет |
смысл |
для |
пользователя, |
не |
|
||||||||
обязательно для вас. Имея это в виду, предоставьте несколько |
|
|||||||||||||
способов сортировки данных, когда это возможно, чтобы |
|
|||||||||||||
пользователь мог выполнить необходимый анализ и сделать |
|
|||||||||||||
выбор с большей легкостью. |
|
|
|
|
|
|
|
|
|
|||||
Библиотеки |
пользовательского |
интерфейсаjQuery |
и |
|
||||||||||
jQueryUI |
предоставляют |
|
средства |
для |
|
выполнения |
всех |
|
||||||
важных задач по гибкости интерфейса и множества других |
|
|||||||||||||
задач (например, возможность |
ввода данных |
с помощью |
|
|||||||||||
перетаскивания). |
На |
рис. |
2 |
показан |
пример |
использования |
|
|||||||
этих библиотек для перемещения элементов по экрану.
29
|
|
Рис. 2. Пример Web-интерфейса |
|
|
|
|||
Создать |
|
интерфейс |
с |
подвижными |
элементами |
|||
относительно |
легко. В следующем коде показано, как это |
|
||||||
сделать (этот |
код |
также |
|
можно |
увидеть |
в |
файл |
|
DragContent.html): |
|
|
|
|
|
|
||
<!DOCTYPE html> <html>
<head>
<script src="https://code.jquery.com/jquery-latest.js">
</script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js">
</script>
<link
rel="stylesheet"
href="https://code.jquery.com/ui/1.9.2/themes/base/jquery -ui.css" />
<style>
#MoveMe
{
border: solid; width: 200px; height: 5em; text-align: center; line-height: 5em;
30
