مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

roya

عضویت از 1392/08/22

salt در ValidateAntiForgeryToken

  • یکشنبه 4 آذر 1397
  • 18:01
تشکر میکنم

سلام و خسته نباشید

هنگام استفاده از 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()

ممنون

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 5 آذر 1397
  • 09:56

خطا مربوط به استفاده از یکی از خصوصیات Antiforgery است که منسوخ شده است و به دلیل منسوخ شدن آن این خطا را دریافت می کنید.

سوال من از شما این است که چرا یک Provider برای Antiforgery پیاده سازی کردید و دلیلتان برای این کار چه بوده است ؟

به طور کل متن سوال واضح نیست و لطفا به متن سوال و جزئیات آن بیشتر اهمیت بدید.

کاربر سایت

roya

عضویت از 1392/08/22

  • دوشنبه 5 آذر 1397
  • 10:38

آقای علیزاده سلام و خسته نباشید

برای امنیت بیشتر در antiforgerytoken  برای هر فرم salt  جدا تعریف میشود اما بدلیل منسوخ شدن salt  در لینک زیر چیشنهاد شده از IAntiForgeryAdditionalDataProvider استفاده بشه و یک مثال زده اینجا

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 5 آذر 1397
  • 12:31

این مسئله برای 4 سال پیش هستش و شما نیازی به این کار ندارید. بنده به صورت معمول از AntiForgery در چندین پروژه استفاده کردم و نگرانی هم بابت امنیت آن ندارم بهتر است از شیوه پیش فرض آن استفاده کنید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)