Бесстрастный responses html. Сумасшедшие формы. Примеры слабой защиты
The response(s) to a given risk should reflect the risk type, the risk assessment (likelihood, impact, criticality) and the organisation’s attitude to risk. There are a number of possible responses to risks and as risks can be threats or opportunities these include responses that are suitable for potential opportunities . The responses are summarised in the table below.
Table of risk responsesRisk Response | Description/example | Suitable for…. risk types (these are suggestions and not exhaustive) |
Threats | ||
Avoid | The risk is avoided by changing the project in someway to bypass the risk. |
Some political risks e.g. adverse public opinion. Some technical/operational/infrastructure risks e.g. maintenance problems. Legal and regulatory risks e.g. regulatory controls, licensing requirements. |
Transfer | Some strategic/commercial risks e.g. theft, insolvency can be insured against. See business risks for more examples. |
|
Reduce | Action is taken to reduce either the likelihood of the risk occurring or the impact that it will have. |
The most frequently used response to risk. Widely applicable - Technical/Operational/Infrastructure e.g. negligence, performance failure, scope ‘creep’, unclear expectations. Organisational/management/human factors e.g. personality clashes, poor leadership, and poor staff selection. |
Some political, legal and regulatory, and economic/financial risks may need to be accepted with a in place e.g. war and disorder, exchange rate fluctuation. |
||
Contingency | Here a plan is put in place to respond if the risk is realised. | Economic/financial/market Arguably all risks can and should have a contingency plan in place. |
Opportunities | ||
Share | An opportunity is shared with a partner or supplier to maximise the benefits through use of shared resource/technology etc. | Technical/operational/infrastructure e.g. new technology, improved designs. |
Exploit | A project could be adjusted to take advantage of a change in technology or a new market. | Economic/financial/market e.g. new and emerging markets, positive changes in exchange rates or interest rates. |
Enhance | Action is taken to increase the likelihood of the opportunity occurring or the positive impact it could have. | Strategic/commercial opportunities such as new partnerships, new capital investment, new promoters. |
Reject | Here no action is taken and the chance to gain from the opportunity is rejected. may be put in place should the opportunity occur. | Political or environmental e.g. new transport links, change of government bringing positive changes in policy/opportunities for lobbying etc. |
Contingency plans should identify the actions that will be taken if a risk occurs. Contingent actions will often have an associated cost and a budget should be set aside in the business case to cover this. The Top 50 Business Risks and how to manage them! 20 Common Project Risks - example Risk Register Checklist of 30 Construction Risks Risk Responses - referencesOffice of Government Commerce (2002), Managing Successful Projects with PRINCE2, London: TSO.
The Projects Group PLC, 2006, Risk Management Overview, Sutton: The Projects Group plc.
Межсайтовые атаки с внедрением сценарияВо время межсайтовой атаки с внедрением сценария (XSS) атакующая сторона внедряет в легальную Web-страницу вредоносный код, который затем запускает вредоносный сценарий на стороне клиента. При посещении пользователем зараженной страницы сценарий загружается в браузер пользователя и там запускается. Эта схема имеет множество разновидностей. Вредоносный сценарий может получать доступ к cookie-файлам браузера, сеансовым маркерам или другой чувствительной информации, хранящейся в браузере. Тем не менее все атаки действуют по схеме, показанной на рисунке 1.
Рисунок 1. Рисунок 1. Типичная XSS-атакаУязвимости XSS
В ходе типичной XSS-атаки атакующая сторона находит способ внедрения строки на Web-страницу сервера. Допустим, атакующий внедрил на Web-страницу следующую строку: alert("вы атакованы") . При каждом посещении пользователем этой страницы его браузер загружает этот сценарий и запускает его вместе с остальным содержимым страницы. В данном случае в результате запуска сценария пользователь увидит всплывающее окно с текстом "вы атакованы".
Последствия XSSЕсли атакующему удалось воспользоваться XSS-уязвимостью Web-приложения, он может внедрить в страницу сценарий, который предоставит доступ к данным учетной записи пользователя. При этом атакующая сторона может выполнять множество вредоносных действий, например:
- похитить учетную запись;
- распространить вирусы;
- получить доступ к истории посещения страниц и содержимому буфера обмена;
- получить возможность дистанционного управления браузером;
- просканировать и использовать программно-аппаратные ресурсы и приложения во внутренней сети.
Для предотвращения XSS-атак приложение должно шифровать выходные данные страницы перед передачей их конечному пользователю. При шифровании выходных данных разметка HTML заменяется альтернативными представлениями —объектами . Браузер отображает эти объекты, но не запускает их. Например, преобразуется в .
В таблице 1 показаны имена объектов для некоторых распространенных символов HTML.
Таблица 1. Имена объектов для символов HTMLНеразрывный пробел | |||
< | Меньше чем | < | |
> | Больше чем | > | > |
& | Амперсанд | & | & |
¢ | Цент | ¢ | ¢ |
£ | Фунт | £ | £ |
¥ | Йена | ¥ | ¥ |
Евро | € | € | |
§ | Параграф | § | § |
© | Авторское право | © | |
® | ® | ® | |
™ | Товарный знак | ™ | ™ |
Когда браузер встречает объекты, они преобразуются обратно в HTML и распечатываются, но они не запускаются. Например, если атакующий внедрит в переменное поле Web-страницы сервера строку alert("вы атакованы") , то при использовании описанной стратегии сервер возвратит строку alert("вы атакованы") .
Когда браузер загрузит зашифрованный сценарий, он преобразует его к виду alert("вы атакованы") и отобразит сценарий в составе Web-страницы, но не запустит его.
Добавление HTML-кода в приложение Java на стороне сервераЧтобы код вредоносного сценария не мог выводиться вместе со страницей, ваше приложение должно шифровать все строковые переменные прежде, чем они отобразятся на странице. Шифрование заключается в простом преобразовании каждого символа в соответствующее имя объекта HTML, как показано в коде Java, приведенном в листинге 1.
Листинг 1. Преобразование символов в имена объектов HTML public class EscapeUtils { public static final HashMap m = new HashMap(); static { m.put(34, """); // < - меньше чем m.put(60, ""); // > - больше чем //Пользователь должен сопоставить все объекты html с соответствующими десятичными значениями. //Соответствие объектов десятичным значениям показано в приведенной ниже таблице } public static String escapeHtml() { String str = "alert(\"abc\")"; try { StringWriter writer = new StringWriter((int) (str.length() * 1.5)); escape(writer, str); System.out.println("encoded string is " + writer.toString()); return writer.toString(); } catch (IOException ioe) { ioe.printStackTrace(); return null; } } public static void escape(Writer writer, String str) throws IOException { int len = str.length(); for (int i = 0; i < len; i++) { char c = str.charAt(i); int ascii = (int) c; String entityName = (String) m.get(ascii); if (entityName == null) { if (c > 0x7F) { writer.write(""); writer.write(Integer.toString(c, 10)); writer.write(";"); } else { writer.write(c); } } else { writer.write(entityName); } } } }В коде Java в листинге 1 выполняется кодирование HTML-строки String String "alert(\"abc\")" . Используйте следующую процедуру:
В результате на выходе появится следующая строка: alert("abc") .
В таблице 2 показано соответствие объектов HTML их десятичным значениям.
Таблица 2. Десятичные значения объектов HTML160 | Неразрывный пробел | |
60 | < | Меньше чем |
62 | > | Больше чем |
38 | & | Амперсанд |
162 | ¢ | Цент |
163 | £ | Фунт |
165 | ¥ | Йена |
8364 | € | Евро |
167 | § | Параграф |
169 | Авторское право | |
174 | ® | Зарегистрированный товарный знак |
8482 | ™ | Товарный знак |
Межсайтовое внедрение сценария является одним из самых распространенных способов атаки на компьютер пользователя. Тем не менее вы можете существенно ослабить способность атакующего инфицировать ваше Web-приложение вредоносным кодом. Создавая приложение, внимательно отнеситесь к шифрованию всех выходных значений страницы перед отправкой их в браузер конечного пользователя.
Описываемый объект является очень полезным и мощным инструментом. Данный объект имеет несколько методов, их описание приводится ниже:
Коллекции: Методы: Свойства: Коллекция Response.CookiesКоллекция Cookies устанавливает значения для cookies. Если указанные cookies не существуют, то создает их. Если cookie существует, то принимает новое значение, а старое уничтожается.
Response.Cookies(cookie) [(ключ) | . аттрибуты ] = значение
Параметры:
- cookie - Имя cookie
- ключ - Необязательный параметр. Если он указан, то cookie - это справочник (вложенный) и ключ - это множество значений.
- аттрибуты - Указанная информация о самих cookie. Данный параметр может быть один из следующих:
- значение - Указывает значение, которое необходимо присвоить данному ключу или атрибуту.
Название | Описание |
Domain | Только запись. Если указан, то cookie передаются только по запросу из этого домена. |
Expires | Только запись. Дата, когда у cookie истекает срок действия. Эта дата должна быть установлена для того, чтобы cookie записались на клиентский жесткий диск после окончания сессии. Если этот атрибут не установлен, то дата окончания срока действия cookie принимается текущей датой. Cookie прекратят срок действия сразу же по окончании сессии. |
HasKey | Только чтение. Указывает на то, содержит ли cookie данный ключ. |
Path | Только запись. Если указан, то cookie передаются только по запросу с этого пути. Если параметр не установлен, то используется путь к приложению. |
Secure | Только запись. Указывает на то, защищены ли будут cookie или нет. |
Замечание:
Если cookie с ключем созданы так, как показано в следующем скрипте,
то следующий заголовок будет послан:
Set-Cookie:MYCOOKIE=TYPE1=сахар&TYPE2=печенье
Если же присвоить mycookie значение без использования ключей, то это действие разрушит type1 и type2 - ключи. К примеру:
В предыдущем примере ключи type1 и type2 будут разрушены и их значения потерены. Mycookie будет теперь содержать в себе значение шоколадный зефир.
Вы также можете проверить существование конкретного ключа следующим способом:
Если будет выведено TRUE, значить такой ключ существует, в случае FALSE - нет.
Метод Response.WriteResponse.Write переменная_или_значение
Параметры:
- переменная_или_значение - Данные для вывода на экран браузера через HTML. Этот параметр может быть любого типа, поддерживаемого VisualBasic Scripting Edition. То есть данные могут быть типов: дата, строка, символ, числовые значения. Значение данного параметра не может содержать комбинации %>. Вместо нее можно использовать равнозначную комбинацию %\>. Web-сервер будет преобразовывать эту последовательность в требуемую, когда скрипт будет выполнен.
Следующий пример показывает как работает метод Response.write для вывода сообщения клиенту.
Я просто скажу вам: А ваше имя
Следующий пример добавляет HTML-таг на web-страничку. Так как данный метод не может содержать комбинацию %>, то мы используем последовательность %\>. Итак пример скрипта:
Результатом вывода будет строка: