سلام دوستان من از رمزنگاری خودکار فیلد های مخفی استفاده کردم. و مشکل من اینه که هنگام استفاده از ckeditor ارور A potentially dangerous Request.Form value was detected from the client رو میده. فیلدی که باید html بگیره رو در مدل alowhtml کردم.
ارور در این خط از کلاس DecryptingControllerFactory میده:
var parameters = requestContext.HttpContext.Request.Params;
کل کد کلاس DecryptingControllerFactory اینه:
using System; using System.Linq; using System.Web.Mvc; namespace Labkhand.Helpers { public class DecryptingControllerFactory : DefaultControllerFactory { private readonly IEncryptSettingsProvider _settings; public DecryptingControllerFactory() { _settings = new EncryptSettingsProvider(); } public override IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName) { var parameters = requestContext.HttpContext.Request.Params; var encryptedParamKeys = parameters.AllKeys.Where(x => x.StartsWith(_settings.EncryptionPrefix)).ToList(); IRijndaelStringEncrypter decrypter = null; foreach (var key in encryptedParamKeys) { if (decrypter == null) { decrypter = GetDecrypter(requestContext); } var oldKey = key.Replace(_settings.EncryptionPrefix, string.Empty); var oldValue = decrypter.Decrypt(parameters[key]); if (requestContext.RouteData.Values[oldKey] != null) { if (requestContext.RouteData.Values[oldKey].ToString() != oldValue) throw new ApplicationException("Form values is modified!"); } requestContext.RouteData.Values[oldKey] = oldValue; } if (decrypter != null) { decrypter.Dispose(); } return base.CreateController(requestContext, controllerName); } private IRijndaelStringEncrypter GetDecrypter(System.Web.Routing.RequestContext requestContext) { var decrypter = new RijndaelStringEncrypter(_settings, requestContext.GetActionKey()); return decrypter; } } }
برای رمزنگاری خودکار فیلد های مخفی هم از اینجا کمک کرفتم
زمانی که این رمزنگاری رو از فایل global حذف می کنم مشکل حل میشه. ولی من نیاز دارم که از این رمزنگاری استفاده کنم
باید به ستونی که برای اون Editor گذاشتید صفت AllowHtml بدید
ممنون. ولی من allowhtml کردم. زمانی که دستی یک مقدار html رو در کنترلر وارد می کنم مشکلی نیست. مشکل اینجاست که وقتی این مقدار بصورت request می خواد بیاد توی کنترلر اول گذرش به کلاس DecryptingControllerFactory
می خوره و توی این کلاس و در خط 18 دیگه نگاه نمیکنه که اون فیلد در مدل allowhtml هست یا نه. فقط گیر میده که تو داری html می فرستی. من میخوام توی خط 18 خونسرد باشه و به این موضوع گیر نده.
متوجه شدم
تحقیق میکنم اگر به نتیجه رسیدم حتما بهتون اطلاع میدم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)