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).
В файле со сценарием вы хотите сделать что-то вроде этого:
import os
dirname = os.path.dirname(__file__)
filename = os.path.join(dirname, 'relative/path/to/file/you/want')
Это даст вам абсолютный путь к файлу, который вы ищете. Обратите внимание: если вы используете setuptools, вам, вероятно, следует использовать его API ресурсов пакета .
ОБНОВЛЕНИЕ : я отвечаю на комментарий здесь, поэтому могу вставить образец кода. : -)
Правильно ли я полагаю, что
__ file __
не всегда доступен (например, когда вы запускаете файл напрямую, а не импортируете его)?
Я предполагаю, что вы имеете в виду __main __
, когда вы упоминаете запуск файла напрямую. Если так, то в моей системе (python 2.5.1 в OS X 10.5.7) это не так:
#foo.py
import os
print os.getcwd()
print __file__
#in the interactive interpreter
>>> import foo
/Users/jason
foo.py
#and finally, at the shell:
~ % python foo.py
/Users/jason
foo.py
Однако я знаю, что есть некоторые особенности с __ file __
на Расширения C. Например,
См. sys.path При инициализации при запуске программы первый элемент этого списка, путь [0], является каталогом, содержащим сценарий, который использовался для вызова интерпретатора Python.
Используйте этот путь в качестве корневой папки, из которой вы применяете свой относительный путь
>>> import sys
>>> import os.path
>>> sys.path[0]
'C:\\Python25\\Lib\\idlelib'
>>> os.path.relpath(sys.path[0], "path_to_libs") # if you have python 2.6
>>> os.path.join(sys.path[0], "path_to_libs")
'C:\\Python25\\Lib\\idlelib\\path_to_libs'