Тонер CSRF: прием маркера с сервера с JavaScript [дубликат]

Типы ссылок по умолчанию равны null, чтобы указать, что они не ссылаются на какой-либо объект. Следовательно, если вы попытаетесь получить доступ к объекту, на который ссылаетесь, а его нет, вы получите исключение NullReferenceException.

Для Ex:

SqlConnection connection = null;
connection.Open();

Когда вы запускаете это кода, вы получите:

System.NullReferenceException: Object reference not set to an instance of an object.

Вы можете избежать этой ошибки, например, следующим образом:

if (connection != null){
    connection.Open();
}

Примечание. Чтобы избежать этой ошибки, вы всегда должны инициализировать свои объекты прежде чем пытаться что-либо сделать с ними.

25
задан Gumbo 28 December 2011 в 15:20
поделиться

2 ответа

В общем случае достаточно иметь только один токен за сеанс , так называемый токен сеанса :

В целом , разработчикам нужно только генерировать этот токен один раз для текущего сеанса. После первоначальной генерации этого токена значение сохраняется в сеансе и используется для каждого последующего запроса до истечения срока действия сеанса.

Если вы хотите еще больше повысить безопасность, вы можете использовать один токен на каждую форму / URL ( токен для каждой формы ) для смягчения воздействия, когда утечка одного токена (например, g1] XSS ), поскольку злоумышленник сможет только успешно атакуйте эту конкретную форму / URL.

Но используя токены для каждого запроса , i. е. маркеры, которые меняются с каждым запросом, скорее сокращают удобство использования веб-сайта, так как ограничивают параллельный просмотр:

Чтобы еще больше повысить безопасность этого предлагаемого дизайна, рассмотрите возможность рандомизации токена CSRF [...] для каждого запрос. Внедрение этого подхода приводит к генерации токенов для каждого запроса, в отличие от токенов для каждого сеанса. Обратите внимание, однако, что это может привести к проблемам удобства использования. Например, функция браузера кнопки «Назад» часто препятствует, поскольку предыдущая страница может содержать токен, который больше недействителен. Взаимодействие с этой предыдущей страницей приведет к ошибочному событию безопасности CSRF на сервере.

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

32
ответ дан Gumbo 31 August 2018 в 17:06
поделиться

Нет, вам просто нужно генерировать токен для каждого сеанса .

Токены очень маловероятны, чтобы случайно просочиться от пользователей, а генерация токена на форму делает вещи очень сложны, если пользователь просматривает сайт в двух разных вкладках / окнах одновременно.

11
ответ дан Quentin 31 August 2018 в 17:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: