Защита CSRF с пользовательским заголовком, отличным от X-Requested-By

Это связано с сообщением https://security.stackexchange.com/questions/23371/csrf-protection-with-custom-headers-and-without-validating-token/23373#23373?newreg=9acf3e40d05f4d19a00eb58b160f8453

Итак, если мы решили использовать проверку пользовательского заголовка в качестве опции для защиты CSRF и если нам нужно использовать какой-либо другой пользовательский заголовок, отличный от «X-Requested-By», то как лучше всего это сделать?


person victor    schedule 29.12.2015    source источник
comment
Можете ли вы описать реальную проблему, которую вы пытаетесь решить? Почему вы не используете токен? Почему вам нужно использовать какой-то другой пользовательский заголовок? Почему вы не можете использовать любой случайный заголовок по вашему выбору?   -  person Xander    schedule 30.12.2015
comment
На самом деле я хочу защитить свой REST API от CSRF-атаки, поэтому, согласно сообщению, упомянутому в вопросе, мы можем сделать это двумя способами: один - через пользовательскую проверку заголовка, а другой - один токен на запрос. Я решил использовать проверку пользовательского заголовка, но вместо X-Requested-By я хочу использовать другой пользовательский заголовок, используемый моим приложением. Я использую библиотеку Sun Jersey Rest.   -  person victor    schedule 30.12.2015
comment
А, хорошо, это проясняет. Тогда это не вопрос безопасности, а вопрос программирования. Тогда я отмечу, что он будет перемещен в StackOverflow.   -  person Xander    schedule 30.12.2015
comment
Итак, у вас есть какая-то причина не использовать этот заголовок? Есть ли у вас какие-либо конкретные проблемы в реализации этого?   -  person eis    schedule 30.12.2015
comment
У меня нет проблем с использованием этого заголовка, но у нас уже есть много пользовательских заголовков в нашем запросе приложения, поэтому я хочу ввести еще один. Вместо этого я могу проверить правильность существующего заголовка.   -  person victor    schedule 30.12.2015
comment
что именно я имею в виду, так это то, почему они ограничивают нас в использовании только X-Requested-By в этом API - jersey.java.net/apidocs/1.17/jersey/com/sun/jersey/api/   -  person victor    schedule 30.12.2015


Ответы (1)


В исходном коде CsrfProtectionFilter проверяемый заголовок определяется как частная статическая переменная. Поэтому невозможно изменить заголовок для проверки.

private static final String HEADER_NAME = "X-Requested-By";

Хорошо придерживаться стандартов и использовать X-Requested-By.
Но, тем не менее, если вы хотите проверить отдельный заголовок, вам нужно написать свой собственный фильтр, что очень просто. Просто скопируйте class и изменить заголовок (что не рекомендуется)

person C.Karthik    schedule 04.01.2016