import java.io.IOException;
public class BeingDeserializer extends JsonDeserializer<Being> {
@Override
public Expertise deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonMappingException {
JsonNode node = jp.getCodec().readTree(jp);
String beingName = node.get("name").asText();
JsonNode valueNode = node.get("value");
BeingName beingByName = ExpertiseName.getBeingByName(beingName);
if(beingByName ==null) {
throw new JsonMappingException("Invalid Being " + beingName);
}
Being being = JsonUtils.getObjectFromJsonNode(valueNode,
ExpertiseFactory.getExpertise(beingByName).getClass());
return being;
}
}
Таким образом, я смог решить вышеупомянутую проблему.
HTTP_ORIGIN
отправляется не всеми браузерами и не является безопасным.
Ничто, отправленное браузером, не может считаться безопасным.
Люди здесь думают об этом все неправильно - стандарт «CORS» не так, что сервер не будет взломан, даже если это помогает в дополнение к тому, что он делает. Цель состоит в том, чтобы позволить «БРАУЗЕРУ» иметь возможность облегчить запросы, которые противоречат той же политике происхождения. Если клиент и сервер находятся на одной странице, «КЛИЕНТ» может решить, разрешить или нет запрос.
Очевидно, что сервер участвует в принятии решения, которое вы помогаете в процессе обеспечения безопасности.
Но это не защитит сервер от несанкционированного доступа - вот для чего нужны пароли и куки.
клиент может быть (как кто-то упомянул) инструментом telnet, где каждая созданная вещь является фальшивкой.
Но одно из преимуществ Chrome, FF и т. Д. Заключается в том, что они помогут вам, не позволяя Javascript выходить за пределы одной и той же исходной песочницы, что означает, что единственное, что по умолчанию может быть взломано, - это то, на собственном сайте «злоумышленников». Или другие сайты, которые решили не быть безопасными.
CORS - это технология, которая позволяет вам сказать - эй, я хочу, чтобы пользователи могли использовать мой шикарный сервис из javascript на этом другом сайте, который они используют. Так что я собираюсь добавить этот сайт в мои исключения. Это означает, что вы помогаете своим авторизованным пользователям пробить брешь в их безопасности браузера для этого конкретного сайта. Что означает дыру, которую может использовать хакер. Таким образом, забота, с которой вы настраиваете службу, верно?
Это означает, что любой сайт, на котором не настроен CORS, по умолчанию защищен от межсайтовых сценариев из совместимого браузера (за исключением ошибок и взломов курс). Браузер спросит, хочет ли этот сервис принять участие в javascript исходного сайта, и если на перекрестном сайте написано «Я ничего не знаю об этом чертовом сайте», то механизм javascript браузера закроет соединение и сбросит данные.
Итак, просто подведу итог: CORS не поможет вам обеспечить безопасность. Это поможет вам сделать дыру в ваших браузерах способной сделать пользователя более безопасным. Но, надеюсь, управляемым способом ... и только для определенных сайтов ..
HTTP - это текстовый протокол. ENTIRE структура заголовка / тела запроса может быть подделана, чтобы сказать что угодно.
Обновлен:
function isOriginAllowed($incomingOrigin, $allowOrigin)
{
$pattern = '/^http:\/\/([\w_-]+\.)*' . $allowOrigin . '$/';
$allow = preg_match($pattern, $incomingOrigin);
if ($allow)
{
return true;
}
else
{
return false;
}
}
$incomingOrigin = array_key_exists('HTTP_ORIGIN', Обновлен:
[110] Пример:
- http: // media.mydomain.com TRUE
- http: // offline.mydomain.com ИСТИНА
- http: // domen1.mydomain.com ИСТИНА
- http: // domen_1.mydomain.com ИСТИНА
- http: // domen-1.mydomain.com TRUE
- http: // ololomydomain.com FALSE
- http: // mydomain.com TRUE
- http: / / pro.mydomain.com TRUE
- http: // super.pro.mydomain.com TRUE
- http: // super.pro.fakemydomain.com FALSE
- http : // pro.fakemydomain.com FALSE
SERVER) ? Обновлен:
[110] Пример:
- http: // media.mydomain.com TRUE
- http: // offline.mydomain.com ИСТИНА
- http: // domen1.mydomain.com ИСТИНА
- http: // domen_1.mydomain.com ИСТИНА
- http: // domen-1.mydomain.com TRUE
- http: // ololomydomain.com FALSE
- http: // mydomain.com TRUE
- http: / / pro.mydomain.com TRUE
- http: // super.pro.mydomain.com TRUE
- http: // super.pro.fakemydomain.com FALSE
- http : // pro.fakemydomain.com FALSE
SERVER['HTTP_ORIGIN'] : NULL;
$allowOrigin = Обновлен:
[110] Пример:
- http: // media.mydomain.com TRUE
- http: // offline.mydomain.com ИСТИНА
- http: // domen1.mydomain.com ИСТИНА
- http: // domen_1.mydomain.com ИСТИНА
- http: // domen-1.mydomain.com TRUE
- http: // ololomydomain.com FALSE
- http: // mydomain.com TRUE
- http: / / pro.mydomain.com TRUE
- http: // super.pro.mydomain.com TRUE
- http: // super.pro.fakemydomain.com FALSE
- http : // pro.fakemydomain.com FALSE
SERVER['HTTP_HOST'];
if ($incomingOrigin !== null && isOriginAllowed($incomingOrigin, $allowOrigin))
{
exit("CSRF protection in POST request: detected invalid Origin header: " . $incomingOrigin);
}
Пример:
HTTP_ORIGIN - это способ защиты от запросов CSRF (межсайтовая подделка запросов). В настоящее время он реализован только Chrome (по состоянию на ноябрь 2011 года). Я тестировал Firefox и Opera - но они провалились. Его имя в заголовке запроса - «Происхождение». На стороне сервера в моем php-скрипте я вижу его как «HTTP_ORIGIN» в переменной $ _SERVER. Этот заголовок отправляется только в некоторых случаях, когда требуется защита от CSRF (достаточно только POST). Вот список всех запросов, установлен ли он или нет:
https://wiki.mozilla.org/Security/Origin
Якорный тег - НЕТ
Навигация по окну - НЕТ
IMG - НЕТ
iframe, embed, applet - ДА
Форма (GET и POST) - ДА
SCRIPT - ДА
таблицы стилей - НЕТ
зависимые загрузки из таблиц стилей - НЕТ
Перенаправления - ДА
XHR - ДА
Исходный заголовок реализовано только в Chrome, к сожалению. Впервые об этом было объявлено в январе 2010 года в блоге Google Chrome:
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
Защита CSRF с помощью заголовка Origin
Заголовок Origin - это новая функция HTML5, которая помогает защитить ваш сайт от атак подделки межсайтовых запросов (CSRF). В CSRF-атаке вредоносный веб-сайт, например attacker.com, инструктирует браузер пользователя отправлять HTTP-запрос на целевой сервер, например example.com, который сбивает сервер example.com с какими-либо действиями. Например, если example.com является провайдером веб-почты, атака CSRF может подтолкнуть example.com к пересылке электронного письма злоумышленнику.
Заголовок Origin помогает сайтам защищаться от CSRF-атак, определяя, какой веб-сайт сгенерировал запрос. В приведенном выше примере example.com видит, что запрос поступил с вредоносного веб-сайта, поскольку заголовок Origin содержит значение http://attacker.com . Чтобы использовать заголовок Origin в качестве защиты CSRF, сайт должен изменять состояние только в ответ на запросы, в которых либо (1) отсутствует заголовок Origin, либо (2) имеется заголовок Origin с значением из белого списка.
Я просто внедряю защиту CSRF в своем php-скрипте, лично я использую Chrome, так что мне этого достаточно, я надеюсь, что другие браузеры скоро поймают chrome.
Что забавно, так это то, что Mozilla изобрела эту функцию безопасности, так как вы можете прочитать много документации о заголовке Origin на его веб-сайте, но у них все еще не было времени на ее реализацию; -)
HTTP_ORIGIN, кажется, содержит только «протокол» и «домен», без косой черты в конце: « http://www.example.com » - даже если вы отправили форму из « http: //www.example.com/myform/".
Простая защита от CSRF в сценарии PHP:
if ("POST" == HTTP_ORIGIN - это способ защиты от запросов CSRF (межсайтовая подделка запросов). В настоящее время он реализован только Chrome (по состоянию на ноябрь 2011 года). Я тестировал Firefox и Opera - но они провалились. Его имя в заголовке запроса - «Происхождение». На стороне сервера в моем php-скрипте я вижу его как «HTTP_ORIGIN» в переменной $ _SERVER. Этот заголовок отправляется только в некоторых случаях, когда требуется защита от CSRF (достаточно только POST). Вот список всех запросов, установлен ли он или нет:
https://wiki.mozilla.org/Security/Origin
Якорный тег - НЕТ
Навигация по окну - НЕТ
IMG - НЕТ
iframe, embed, applet - ДА
Форма (GET и POST) - ДА
SCRIPT - ДА
таблицы стилей - НЕТ
зависимые загрузки из таблиц стилей - НЕТ
Перенаправления - ДА
XHR - ДА
Исходный заголовок реализовано только в Chrome, к сожалению. Впервые об этом было объявлено в январе 2010 года в блоге Google Chrome:
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
Защита CSRF с помощью заголовка Origin
Заголовок Origin - это новая функция HTML5, которая помогает защитить ваш сайт от атак подделки межсайтовых запросов (CSRF). В CSRF-атаке вредоносный веб-сайт, например attacker.com, инструктирует браузер пользователя отправлять HTTP-запрос на целевой сервер, например example.com, который сбивает сервер example.com с какими-либо действиями. Например, если example.com является провайдером веб-почты, атака CSRF может подтолкнуть example.com к пересылке электронного письма злоумышленнику.
Заголовок Origin помогает сайтам защищаться от CSRF-атак, определяя, какой веб-сайт сгенерировал запрос. В приведенном выше примере example.com видит, что запрос поступил с вредоносного веб-сайта, поскольку заголовок Origin содержит значение http://attacker.com . Чтобы использовать заголовок Origin в качестве защиты CSRF, сайт должен изменять состояние только в ответ на запросы, в которых либо (1) отсутствует заголовок Origin, либо (2) имеется заголовок Origin с значением из белого списка.
Я просто внедряю защиту CSRF в своем php-скрипте, лично я использую Chrome, так что мне этого достаточно, я надеюсь, что другие браузеры скоро поймают chrome.
Что забавно, так это то, что Mozilla изобрела эту функцию безопасности, так как вы можете прочитать много документации о заголовке Origin на его веб-сайте, но у них все еще не было времени на ее реализацию; -)
HTTP_ORIGIN, кажется, содержит только «протокол» и «домен», без косой черты в конце: « http://www.example.com » - даже если вы отправили форму из « http: //www.example.com/myform/".
Простая защита от CSRF в сценарии PHP:
[110] Этот сценарий все еще можно обновить для поддержки ПОРТА, отличного от 80 (Источник содержит порт, отличающийся от 80), подключения HTTPS и отправку формы из разных поддоменов (например, sub.example.com => отправка запроса на www.example.com).
SERVER["REQUEST_METHOD"]) {
if (isset( HTTP_ORIGIN - это способ защиты от запросов CSRF (межсайтовая подделка запросов). В настоящее время он реализован только Chrome (по состоянию на ноябрь 2011 года). Я тестировал Firefox и Opera - но они провалились. Его имя в заголовке запроса - «Происхождение». На стороне сервера в моем php-скрипте я вижу его как «HTTP_ORIGIN» в переменной $ _SERVER. Этот заголовок отправляется только в некоторых случаях, когда требуется защита от CSRF (достаточно только POST). Вот список всех запросов, установлен ли он или нет:
https://wiki.mozilla.org/Security/Origin
Якорный тег - НЕТ
Навигация по окну - НЕТ
IMG - НЕТ
iframe, embed, applet - ДА
Форма (GET и POST) - ДА
SCRIPT - ДА
таблицы стилей - НЕТ
зависимые загрузки из таблиц стилей - НЕТ
Перенаправления - ДА
XHR - ДА
Исходный заголовок реализовано только в Chrome, к сожалению. Впервые об этом было объявлено в январе 2010 года в блоге Google Chrome:
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
Защита CSRF с помощью заголовка Origin
Заголовок Origin - это новая функция HTML5, которая помогает защитить ваш сайт от атак подделки межсайтовых запросов (CSRF). В CSRF-атаке вредоносный веб-сайт, например attacker.com, инструктирует браузер пользователя отправлять HTTP-запрос на целевой сервер, например example.com, который сбивает сервер example.com с какими-либо действиями. Например, если example.com является провайдером веб-почты, атака CSRF может подтолкнуть example.com к пересылке электронного письма злоумышленнику.
Заголовок Origin помогает сайтам защищаться от CSRF-атак, определяя, какой веб-сайт сгенерировал запрос. В приведенном выше примере example.com видит, что запрос поступил с вредоносного веб-сайта, поскольку заголовок Origin содержит значение http://attacker.com . Чтобы использовать заголовок Origin в качестве защиты CSRF, сайт должен изменять состояние только в ответ на запросы, в которых либо (1) отсутствует заголовок Origin, либо (2) имеется заголовок Origin с значением из белого списка.
Я просто внедряю защиту CSRF в своем php-скрипте, лично я использую Chrome, так что мне этого достаточно, я надеюсь, что другие браузеры скоро поймают chrome.
Что забавно, так это то, что Mozilla изобрела эту функцию безопасности, так как вы можете прочитать много документации о заголовке Origin на его веб-сайте, но у них все еще не было времени на ее реализацию; -)
HTTP_ORIGIN, кажется, содержит только «протокол» и «домен», без косой черты в конце: « http://www.example.com » - даже если вы отправили форму из « http: //www.example.com/myform/".
Простая защита от CSRF в сценарии PHP:
[110] Этот сценарий все еще можно обновить для поддержки ПОРТА, отличного от 80 (Источник содержит порт, отличающийся от 80), подключения HTTPS и отправку формы из разных поддоменов (например, sub.example.com => отправка запроса на www.example.com).
SERVER["HTTP_ORIGIN"])) {
$address = "http://". HTTP_ORIGIN - это способ защиты от запросов CSRF (межсайтовая подделка запросов). В настоящее время он реализован только Chrome (по состоянию на ноябрь 2011 года). Я тестировал Firefox и Opera - но они провалились. Его имя в заголовке запроса - «Происхождение». На стороне сервера в моем php-скрипте я вижу его как «HTTP_ORIGIN» в переменной $ _SERVER. Этот заголовок отправляется только в некоторых случаях, когда требуется защита от CSRF (достаточно только POST). Вот список всех запросов, установлен ли он или нет:
https://wiki.mozilla.org/Security/Origin
Якорный тег - НЕТ
Навигация по окну - НЕТ
IMG - НЕТ
iframe, embed, applet - ДА
Форма (GET и POST) - ДА
SCRIPT - ДА
таблицы стилей - НЕТ
зависимые загрузки из таблиц стилей - НЕТ
Перенаправления - ДА
XHR - ДА
Исходный заголовок реализовано только в Chrome, к сожалению. Впервые об этом было объявлено в январе 2010 года в блоге Google Chrome:
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
Защита CSRF с помощью заголовка Origin
Заголовок Origin - это новая функция HTML5, которая помогает защитить ваш сайт от атак подделки межсайтовых запросов (CSRF). В CSRF-атаке вредоносный веб-сайт, например attacker.com, инструктирует браузер пользователя отправлять HTTP-запрос на целевой сервер, например example.com, который сбивает сервер example.com с какими-либо действиями. Например, если example.com является провайдером веб-почты, атака CSRF может подтолкнуть example.com к пересылке электронного письма злоумышленнику.
Заголовок Origin помогает сайтам защищаться от CSRF-атак, определяя, какой веб-сайт сгенерировал запрос. В приведенном выше примере example.com видит, что запрос поступил с вредоносного веб-сайта, поскольку заголовок Origin содержит значение http://attacker.com . Чтобы использовать заголовок Origin в качестве защиты CSRF, сайт должен изменять состояние только в ответ на запросы, в которых либо (1) отсутствует заголовок Origin, либо (2) имеется заголовок Origin с значением из белого списка.
Я просто внедряю защиту CSRF в своем php-скрипте, лично я использую Chrome, так что мне этого достаточно, я надеюсь, что другие браузеры скоро поймают chrome.
Что забавно, так это то, что Mozilla изобрела эту функцию безопасности, так как вы можете прочитать много документации о заголовке Origin на его веб-сайте, но у них все еще не было времени на ее реализацию; -)
HTTP_ORIGIN, кажется, содержит только «протокол» и «домен», без косой черты в конце: « http://www.example.com » - даже если вы отправили форму из « http: //www.example.com/myform/".
Простая защита от CSRF в сценарии PHP:
[110] Этот сценарий все еще можно обновить для поддержки ПОРТА, отличного от 80 (Источник содержит порт, отличающийся от 80), подключения HTTPS и отправку формы из разных поддоменов (например, sub.example.com => отправка запроса на www.example.com).
SERVER["SERVER_NAME"];
if (strpos($address, HTTP_ORIGIN - это способ защиты от запросов CSRF (межсайтовая подделка запросов). В настоящее время он реализован только Chrome (по состоянию на ноябрь 2011 года). Я тестировал Firefox и Opera - но они провалились. Его имя в заголовке запроса - «Происхождение». На стороне сервера в моем php-скрипте я вижу его как «HTTP_ORIGIN» в переменной $ _SERVER. Этот заголовок отправляется только в некоторых случаях, когда требуется защита от CSRF (достаточно только POST). Вот список всех запросов, установлен ли он или нет:
https://wiki.mozilla.org/Security/Origin
Якорный тег - НЕТ
Навигация по окну - НЕТ
IMG - НЕТ
iframe, embed, applet - ДА
Форма (GET и POST) - ДА
SCRIPT - ДА
таблицы стилей - НЕТ
зависимые загрузки из таблиц стилей - НЕТ
Перенаправления - ДА
XHR - ДА
Исходный заголовок реализовано только в Chrome, к сожалению. Впервые об этом было объявлено в январе 2010 года в блоге Google Chrome:
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
Защита CSRF с помощью заголовка Origin
Заголовок Origin - это новая функция HTML5, которая помогает защитить ваш сайт от атак подделки межсайтовых запросов (CSRF). В CSRF-атаке вредоносный веб-сайт, например attacker.com, инструктирует браузер пользователя отправлять HTTP-запрос на целевой сервер, например example.com, который сбивает сервер example.com с какими-либо действиями. Например, если example.com является провайдером веб-почты, атака CSRF может подтолкнуть example.com к пересылке электронного письма злоумышленнику.
Заголовок Origin помогает сайтам защищаться от CSRF-атак, определяя, какой веб-сайт сгенерировал запрос. В приведенном выше примере example.com видит, что запрос поступил с вредоносного веб-сайта, поскольку заголовок Origin содержит значение http://attacker.com . Чтобы использовать заголовок Origin в качестве защиты CSRF, сайт должен изменять состояние только в ответ на запросы, в которых либо (1) отсутствует заголовок Origin, либо (2) имеется заголовок Origin с значением из белого списка.
Я просто внедряю защиту CSRF в своем php-скрипте, лично я использую Chrome, так что мне этого достаточно, я надеюсь, что другие браузеры скоро поймают chrome.
Что забавно, так это то, что Mozilla изобрела эту функцию безопасности, так как вы можете прочитать много документации о заголовке Origin на его веб-сайте, но у них все еще не было времени на ее реализацию; -)
HTTP_ORIGIN, кажется, содержит только «протокол» и «домен», без косой черты в конце: « http://www.example.com » - даже если вы отправили форму из « http: //www.example.com/myform/".
Простая защита от CSRF в сценарии PHP:
[110] Этот сценарий все еще можно обновить для поддержки ПОРТА, отличного от 80 (Источник содержит порт, отличающийся от 80), подключения HTTPS и отправку формы из разных поддоменов (например, sub.example.com => отправка запроса на www.example.com).
SERVER["HTTP_ORIGIN"]) !== 0) {
exit("CSRF protection in POST request: detected invalid Origin header: ". HTTP_ORIGIN - это способ защиты от запросов CSRF (межсайтовая подделка запросов). В настоящее время он реализован только Chrome (по состоянию на ноябрь 2011 года). Я тестировал Firefox и Opera - но они провалились. Его имя в заголовке запроса - «Происхождение». На стороне сервера в моем php-скрипте я вижу его как «HTTP_ORIGIN» в переменной $ _SERVER. Этот заголовок отправляется только в некоторых случаях, когда требуется защита от CSRF (достаточно только POST). Вот список всех запросов, установлен ли он или нет:
https://wiki.mozilla.org/Security/Origin
Якорный тег - НЕТ
Навигация по окну - НЕТ
IMG - НЕТ
iframe, embed, applet - ДА
Форма (GET и POST) - ДА
SCRIPT - ДА
таблицы стилей - НЕТ
зависимые загрузки из таблиц стилей - НЕТ
Перенаправления - ДА
XHR - ДА
Исходный заголовок реализовано только в Chrome, к сожалению. Впервые об этом было объявлено в январе 2010 года в блоге Google Chrome:
http://blog.chromium.org/2010/01/security-in-depth-new-security-features.html
Защита CSRF с помощью заголовка Origin
Заголовок Origin - это новая функция HTML5, которая помогает защитить ваш сайт от атак подделки межсайтовых запросов (CSRF). В CSRF-атаке вредоносный веб-сайт, например attacker.com, инструктирует браузер пользователя отправлять HTTP-запрос на целевой сервер, например example.com, который сбивает сервер example.com с какими-либо действиями. Например, если example.com является провайдером веб-почты, атака CSRF может подтолкнуть example.com к пересылке электронного письма злоумышленнику.
Заголовок Origin помогает сайтам защищаться от CSRF-атак, определяя, какой веб-сайт сгенерировал запрос. В приведенном выше примере example.com видит, что запрос поступил с вредоносного веб-сайта, поскольку заголовок Origin содержит значение http://attacker.com . Чтобы использовать заголовок Origin в качестве защиты CSRF, сайт должен изменять состояние только в ответ на запросы, в которых либо (1) отсутствует заголовок Origin, либо (2) имеется заголовок Origin с значением из белого списка.
Я просто внедряю защиту CSRF в своем php-скрипте, лично я использую Chrome, так что мне этого достаточно, я надеюсь, что другие браузеры скоро поймают chrome.
Что забавно, так это то, что Mozilla изобрела эту функцию безопасности, так как вы можете прочитать много документации о заголовке Origin на его веб-сайте, но у них все еще не было времени на ее реализацию; -)
HTTP_ORIGIN, кажется, содержит только «протокол» и «домен», без косой черты в конце: « http://www.example.com » - даже если вы отправили форму из « http: //www.example.com/myform/".
Простая защита от CSRF в сценарии PHP:
[110] Этот сценарий все еще можно обновить для поддержки ПОРТА, отличного от 80 (Источник содержит порт, отличающийся от 80), подключения HTTPS и отправку формы из разных поддоменов (например, sub.example.com => отправка запроса на www.example.com).
SERVER["HTTP_ORIGIN"]);
}
}
}
Этот сценарий все еще можно обновить для поддержки ПОРТА, отличного от 80 (Источник содержит порт, отличающийся от 80), подключения HTTPS и отправку формы из разных поддоменов (например, sub.example.com => отправка запроса на www.example.com).