2014-10-23 14 views
5

Chúng tôi bắt đầu để có được nhiều sai sót như vậy hàng ngày, xuất hiện trong Event Log:"không hợp lệ JSON nguyên thủy: alihack" lỗi đến từ một trang web ASP.NET MVC

không hợp lệ JSON nguyên thủy: alihack. tại System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() tại System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32 sâu) tại System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (String đầu vào, Int32 depthLimit, JavaScriptSerializer serializer) tại System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer serializer, string đầu vào, Type type, Int32 depthLimit) tại System.Web.Mvc.JsonValueProviderFactory.GetDeserializedObject (ControllerContext controllerContext) tại System.Web.Mvc.JsonValueProviderFactory.GetValueProvider (Contro llerContext controllerContext) tại System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider (ControllerContext controllerContext) tại System.Web.Mvc.ControllerBase.get_ValueProvider() tại System.Web.Mvc.ControllerActionInvoker.GetParameterValue (ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) tại System.Web.Mvc.ControllerActionInvoker.GetParameterValues ​​(ControllerContext controllerContext, ActionDescriptor actionDescriptor) tại System.Web.Mvc.Async.AsyncControllerActionInvoker. <> c__DisplayClass21.b__19 (AsyncCallback AsyncCallback, Object asyncState) tại System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.Begin (AsyncCallback callback , Object nhà nước, Int32 timeout) tại System.Web.Mvc.Async .AsyncControllerActionInvoker.BeginInvokeAction (controllerContext controllerContext, string actionName, AsyncCallback callback, Object nhà nước) tại System.Web.Mvc.Controller.b__1c (AsyncCallback AsyncCallback, Object asyncState, ExecuteCoreState innerState) tại System.Web.Mvc.Async .AsyncResultWrapper.WrappedAsyncVoid 1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.Begin (AsyncCallback gọi lại, Trạng thái đối tượng, Int32 tim eout) tại System.Web.Mvc.Controller.BeginExecuteCore (AsyncCallback callback, Object nhà nước) tại System.Web.Mvc.Controller.b__14 (AsyncCallback AsyncCallback, Object callbackState, điều khiển điều khiển) tại System.Web.Mvc .Async.AsyncResultWrapper.WrappedAsyncVoid 1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.Begin (AsyncCallback callback , Object nhà nước, Int32 timeout) tại System.Web.Mvc.Controller.BeginExecute (requestContext requestContext, AsyncCallback callback, Object nhà nước) tại System.Web.Mvc .Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute (RequestContext requestContext, AsyncCallback gọi lại, Trạng thái đối tượng) tại System.Web.Mvc.MvcHandler.b__4 (A syncCallback AsyncCallback, Object asyncState, ProcessRequestState innerState) tại System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid 1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.Begin (AsyncCallback callback , Object nhà nước, Int32 timeout) tại System.Web.Mvc.MvcHandler.BeginProcessRequest (HttpContextBase httpContext, Gọi lại AsyncCallback, Trạng thái đối tượng) tại System.Web.Mvc.MvcHandler.BeginProcessRequest (HttpContext httpContext, Gọi lại AsyncCallback, Trạng thái đối tượng) tại System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest (HttpContext bối cảnh, AsyncCallback cb, Object extraData) tại Orchard.Mvc.Routes.ShellRoute.HttpAsyncHandler.BeginProcessRequest (HttpContext bối cảnh, AsyncCallback cb, Object extraData) tại System.Web.HttpApplication.CallHandlerExecutionStep.System. Web.HttpApplication.IExecutionStep.Execute() tại System.Web.HttpApplication.ExecuteStep (IExecutionStep bước, Boolean & completedSynchronously)

Các yêu cầu đi đến http://example.com/ali.txt. Sẽ có điều gì đó khác trong tải trọng của yêu cầu vì chỉ cần mở URL này một cách chính xác dẫn đến 404.

Đây có phải là điều đáng lo ngại không? Tôi có thể, tôi nên ngăn chặn một lỗi như vậy xảy ra và thay vào đó trả lại một yêu cầu xấu? Tại sao việc de-serialization này xảy ra ngay từ đầu?

+0

Một downvoting thực sự có thể giải thích nó. – Piedone

+0

Tôi nhận thấy vấn đề tương tự trong nhật ký ELMAH của chúng tôi. Tôi đang cố gắng theo dõi nó ngay bây giờ. – Paul

+0

Tuyệt vời, hãy cho tôi biết nếu bạn tìm thấy điều gì đó. – Piedone

Trả lời

3

Sự cố này trùng lặp với (JSON::ParserError) "{N}: unexpected token at 'alihack<%eval request(\"alihack.com\")%> nhưng đối với một máy chủ khác (IIS).

Nếu trang web của bạn không sử dụng yêu cầu PUT, bạn có thể đơn giản từ chối tất cả những yêu cầu đó bằng cách sử dụng <requestFiltering />.

<configuration> 
    <system.webServer> 
     <security> 
     <requestFiltering> 
      <verbs applyToWebDAV="false"> 
      <add verb="PUT" allowed="false" /> 
      </verbs> 
     </requestFiltering> 
     </security> 
    </system.webServer> 
</configuration> 

Nếu không một giải pháp thanh lịch hơn có thể được archieved với url rewrite module (có thể được cài đặt với các Web Platform Installer):

<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Abort requests to ali.txt - alihack" patternSyntax="Wildcard" stopProcessing="true"> 
      <match url="ali.txt" /> 
      <conditions /> 
      <action type="AbortRequest" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 
+0

Cảm ơn bạn, tuyệt vời! – Piedone

+0

Vì bạn không sử dụng ký tự đại diện, bạn có thể sử dụng '' 'patternSyntax =" ExactMatch "' '' –

Các vấn đề liên quan