Весь эти yield
операторы в определении итератора преобразовываются в состояние в конечном автомате, который эффективно использует switch
оператор для усовершенствования состояний. Если бы это сделало , генерируют код для yield
операторы в попытке/выгоде, которую это должно было бы копировать все в try
блок для каждый yield
оператор в то время как, исключая любой yield
оператор для того блока. Это не всегда возможно, особенно если один yield
оператор является иждивенцем на более раннем.
Много информации о AntiForgeryToken здесь: http://blog.codeville.net/2008/09/01/prevent-cross-site-request-forgery-csrf-using -aspnet-mvcs-antiforgerytoken-helper /
Это необходимо для предотвращения подделки межсайтовых запросов (CSRF). Это довольно стандартное поведение - нажать «Сохранить», заполнить форму и выполнить какое-либо действие на сервере, например, сохранить данные пользователя. Как узнать, что пользователь, отправляющий форму, является тем пользователем, за которого они выдвигаются? В большинстве случаев вы будете использовать файлы cookie или аутентификацию на основе Windows.
Что, если злоумышленник заманивает вас на сайт, который отправляет точно такую же форму в небольшом скрытом IFRAME? Ваши файлы cookie отправляются в неизменном виде, и сервер не видит в этом запросе, отличном от законного. (Как обнаружил Gmail: http: //www.gnucitizen. org / blog / google-gmail-e-mail-hijack-method / )
Токен защиты от подделки предотвращает эту форму атаки, создавая дополнительный токен cookie каждый раз, когда создается страница. Токен присутствует как в форме, так и в файле cookie, если форма и cookie не совпадают, у нас есть CSRF-атака (поскольку злоумышленник не сможет прочитать токен защиты от подделки с помощью атаки, описанной выше).
А что делает соль, из статьи выше:
Salt - это просто произвольная строка. Другое значение соли означает, что будет создан другой токен защиты от подделки. Это означает, что даже если злоумышленнику каким-то образом удастся заполучить действительный токен, он не сможет повторно использовать его в других частях приложения, где требуется другое значение соли.
Обновление: Как генерируется токен ? Загрузите источник ,
У вас есть задайте несколько не связанных между собой проблем:
Он используется (предположительно) для проверки действительности каждого запроса. Итак, учтите, что кто-то пытается предоставить ссылку на страницу ? X = 1
, если токен также не передан, запрос будет отклонен. Кроме того, это (может) предотвратить повторную публикацию одного и того же элемента. Если вы дважды нажмете «опубликовать», токен, скорее всего, изменится (каждый запрос), и этот случай будет обнаружен с помощью чего-то вроде:
Session["nextToken"] = token;
WriteToken(token);
...
if( !Request["nextToken"] == Session["nextToken"] ){
...
}
// note: order in code is slightly different, you must take the token
// before regenerating it, obviously
Я думаю, что термин для этого (атака, которую он защищает) называется «CSRF» (Cross -Site Request Forgery), в наши дни.
Попробуйте прочитать документацию, прилагаемую к отчету Он используется (предположительно) для проверки действительности каждого запроса. Итак, учтите, что кто-то пытается предоставить ссылку на страницу ? X = 1
, если токен также не передан, запрос будет отклонен. Кроме того, это (может) предотвратить повторную публикацию одного и того же элемента. Если вы дважды нажмете «опубликовать», токен, скорее всего, изменится (каждый запрос), и этот случай будет обнаружен с помощью чего-то вроде:
Session["nextToken"] = token;
WriteToken(token);
...
if( !Request["nextToken"] == Session["nextToken"] ){
...
}
// note: order in code is slightly different, you must take the token
// before regenerating it, obviously
Я думаю, что термин для этого (атака, которую он защищает) называется «CSRF» (Cross -Site Request Forgery), в наши дни.
Попробуйте прочитать документацию, прилагаемую к отчету Он используется (предположительно) для проверки действительности каждого запроса. Итак, учтите, что кто-то пытается предоставить ссылку на страницу ? X = 1
, если токен также не передан, запрос будет отклонен. Кроме того, это (может) предотвратить повторную публикацию одного и того же элемента. Если вы дважды нажмете «опубликовать», токен, скорее всего, изменится (каждый запрос), и этот случай будет обнаружен с помощью чего-то вроде:
Session["nextToken"] = token;
WriteToken(token);
...
if( !Request["nextToken"] == Session["nextToken"] ){
...
}
// note: order in code is slightly different, you must take the token
// before regenerating it, obviously
Я думаю, что термин для этого (атака, которую он защищает) называется «CSRF» (Cross -Site Request Forgery), в наши дни.
запрос будет отклонен. Кроме того, это (может) предотвратить повторную публикацию одного и того же элемента. Если вы дважды нажмете «опубликовать», токен, скорее всего, изменится (каждый запрос), и этот случай будет обнаружен с помощью чего-то вроде:Session["nextToken"] = token;
WriteToken(token);
...
if( !Request["nextToken"] == Session["nextToken"] ){
...
}
// note: order in code is slightly different, you must take the token
// before regenerating it, obviously
Я думаю, что термин для этого (атака, которую он защищает) называется «CSRF» (Cross -Site Request Forgery), в наши дни.
запрос будет отклонен. Кроме того, это (может) предотвратить повторную публикацию одного и того же элемента. Если вы дважды нажмете «опубликовать», токен, скорее всего, изменится (каждый запрос), и этот случай будет обнаружен с помощью чего-то вроде:Session["nextToken"] = token;
WriteToken(token);
...
if( !Request["nextToken"] == Session["nextToken"] ){
...
}
// note: order in code is slightly different, you must take the token
// before regenerating it, obviously
Я думаю, что термин для этого (атака, которую он защищает) называется «CSRF» (Cross -Site Request Forgery), в наши дни.