سلام و خسته نباشید
هنگام استفاده از salt در ValidateAntiForgeryToken اررور زیر نمایان میشه:
["The 'Salt' property is deprecated. To specify custom data to be embedded within the token, use the static AntiForgeryConfig.AdditionalDataProvider property)]
۱- نحوه تعریف provider چگونه است من این رو در stackoverflow دیدم
public class MyAntiForgeryAdditionalDataProvider : IAntiForgeryAdditionalDataProvider { public string GetAdditionalData(HttpContextBase context) { return GenerateTokenAndSaveItToTheDB(); } public bool ValidateAdditionalData(HttpContextBase context, string additionalData) { Guid token = Guid.TryParse(additionalData, out token) ? token : Guid.Empty; if (token == Guid.Empty) return false; return GetIfTokenIsFoundInTheDBAndNotExpired(token); } private string GenerateTokenAndSaveItToTheDB() { var newToken = Guid.NewGuid().ToString(); //save it to the db return newToken; } }
و تعریف اون در global
protected void Application_Start() { AntiForgeryConfig.AdditionalDataProvider = new MyAntiForgeryAdditionalDataProvider(); }
1- دلیل ذخیره کردنش در db
2- حالا باید بجای ValidateAntiForgeryToken بالای کنترلر چی استفاده کنم؟ همینطور در razor به جای
@Html.AntiForgeryToken()
ممنون
خطا مربوط به استفاده از یکی از خصوصیات Antiforgery است که منسوخ شده است و به دلیل منسوخ شدن آن این خطا را دریافت می کنید.
سوال من از شما این است که چرا یک Provider برای Antiforgery پیاده سازی کردید و دلیلتان برای این کار چه بوده است ؟
به طور کل متن سوال واضح نیست و لطفا به متن سوال و جزئیات آن بیشتر اهمیت بدید.
آقای علیزاده سلام و خسته نباشید
برای امنیت بیشتر در antiforgerytoken برای هر فرم salt جدا تعریف میشود اما بدلیل منسوخ شدن salt در لینک زیر چیشنهاد شده از IAntiForgeryAdditionalDataProvider استفاده بشه و یک مثال زده اینجا
این مسئله برای 4 سال پیش هستش و شما نیازی به این کار ندارید. بنده به صورت معمول از AntiForgery در چندین پروژه استفاده کردم و نگرانی هم بابت امنیت آن ندارم بهتر است از شیوه پیش فرض آن استفاده کنید.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)