我完全喪失了爲何出現此錯誤的原因。這個錯誤的典型原因與嘗試將HTML標記提交到文本字符串或類似的東西有關,但我沒有這樣做。我認爲這發生的頁面需要一個簡單的電子郵件地址。從客戶端檢測到潛在危險的Request.Path值
這裏是我的模型驗證...
public class Subscriber
{
[Key]
[DisplayName("Email Address")]
[Required(ErrorMessage = "{0} is required")]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$", ErrorMessage = "{0} must be a valid email address")]
public string EmailAddress { get; set; }
public Guid UnsubscribeKey { get; set; }
}
這裏是我的腳本引用,因爲這個錯誤似乎是在腳本目錄...
我最好的猜測是,有人正在惡意地向電子郵件地址輸入一些無效的腳本,但我在Elmah或CodeSmith Insight中看不到任何指向我的任何代碼的錯誤。我甚至無法弄清楚究竟發生了什麼。
而且這裏的錯誤...從客戶端檢測到
有潛在危險的Request的值(:)。 (/ NewsList/Scripts /,data:c,complete:function(a,b,c){c = a.responseText,a.isResolved()& &(a.done(function(a){c = a}) ,i.html(克)
System.Web.HttpException(0X80004005):從客戶端(:) 在System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 檢測到潛在危險的Request的值在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext的上下文)
在System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在System.Web.HttpApplication + PipelineStepManager.ValidateHelper(HttpContext的上下文)
路徑中的非法字符。
System.ArgumentException:路徑中的非法字符。 在System.IO.Path.CheckInvalidPathChars(字符串路徑) 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(字符串[] STR) 在System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess訪問,AccessControlActions控制,字符串[ ]在System.Web.Policy.Permissions.FileIOPermission.ctor(FileIOPermissionAccess訪問,字符串路徑) at System.Web.InternalSecurityPermissions.PathDiscovery(String path) 在System.Web。 HttpRequest.get_PhysicalPath() 在WebsitePanel.IIsModules.SecureFolders.context_OnEnter(對象發件人,EventArgs的) 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep。在System.Web.HttpApplication.ExecuteStep執行() (IExecutionStep步驟,布爾& completedSynchronously)
在System.IO.Path.CheckInvalidPathChars(字符串路徑) 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(字符串[ (FileIOPermissionAccess訪問,AccessControlActions控件,String [] pathListOrig,布爾checkForDuplicates,布爾needFullPath,布爾copyPathList) 在System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess訪問,String path) at System.Web。InternalSecurityPermissions.PathDiscovery(字符串路徑) 在System.Web.HttpRequest.get_PhysicalPath() 在WebsitePanel.IIsModules.SecureFolders.context_OnEnter(對象發件人,EventArgs的) 在System.Web.HttpApplication + SyncEventExecutionStep.System.Web.HttpApplication。 IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep一步,布爾& completedSynchronously)
UPDATE - 可能分辨 貨架我的大腦更多關於這個我看到了 「WebsitePanel.IIsModules.SecureFolders」 在後堆棧跟蹤和震驚我的記憶。我記得看到有關我的託管服務提供商上的安全文件夾這個功能被埋在他們的控制面板裏,這個方法是有意義的。我發郵件給他們,要求他們禁用該模塊。幾天沒有發生,所以我懷疑是這樣。
用於驗證電子郵件的正則表達式不正確。只提到一個缺陷,它不會在電子郵件地址的第一部分接受'+'。 – icktoofay
@icktoofay你有沒有一個例子可能是一個無效的電子郵件地址,但我目前的邏輯會說是有效的? – oliwa
我實際上是在說它拒絕了有效的電子郵件地址(例如'example + test @ gmail.com'),但是你的正則表達式接受'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @ a.com',但它是一個無效的電子郵件地址。那裏的特定問題(本地部分超過64個字符)很容易在正則表達式中修復,但推薦的選擇是使用遵循RFC的電子郵件解析器,而不是使用正則表達式,因爲這不是唯一的問題。 – icktoofay