zoukankan      html  css  js  c++  java
  • 从NetCore报错到MySql安全

    之前项目在测试服务器上的一些接口时不时会报出下面的错误:(采用Abp框架)

    "SocketException: 你的主机中的软件中止了一个已建立的连接。
    STACK TRACE:    at MySqlConnector.Protocol.Serialization.SocketByteHandler.WriteBytesAsync(ArraySegment`1 data, IOBehavior ioBehavior) in C:projectsmysqlconnectorsrcMySqlConnectorProtocolSerializationSocketByteHandler.cs:line 90
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySqlConnector.Utilities.ValueTaskExtensions.<ContinueWith>d__0`2.MoveNext() in C:projectsmysqlconnectorsrcMySqlConnectorUtilitiesValueTaskExtensions.cs:line 8
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:projectsmysqlconnectorsrcMySqlConnectorCoreServerSession.cs:line 1225
       at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySqlConnector.Core.TextCommandExecutor.<ExecuteReaderAsync>d__1.MoveNext() in C:projectsmysqlconnectorsrcMySqlConnectorCoreTextCommandExecutor.cs:line 36
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySql.Data.MySqlClient.MySqlCommand.<ExecuteNonQueryAsync>d__60.MoveNext() in C:projectsmysqlconnectorsrcMySqlConnectorMySql.Data.MySqlClientMySqlCommand.cs:line 261
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() in C:projectsmysqlconnectorsrcMySqlConnectorMySql.Data.MySqlClientMySqlCommand.cs:line 62
       at MySql.Data.MySqlClient.MySqlTransaction.Dispose(Boolean disposing) in C:projectsmysqlconnectorsrcMySqlConnectorMySql.Data.MySqlClientMySqlTransaction.cs:line 81
       at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.Dispose()
       at Abp.EntityFrameworkCore.Uow.DbContextEfCoreTransactionStrategy.Dispose(IIocResolver iocResolver)
       at Abp.EntityFrameworkCore.Uow.EfCoreUnitOfWork.DisposeUow()
       at Abp.Domain.Uow.UnitOfWorkBase.Dispose()
       at Abp.AspNetCore.Mvc.Uow.AbpUowActionFilter.<OnActionExecutionAsync>d__4.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextActionFilterAsync>d__10.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
       at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
       at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeInnerFilterAsync>d__13.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeNextExceptionFilterAsync>d__24.MoveNext()
    "
    View Code
    MySql.Data.MySqlClient.MySqlException (0x80004005): Failed to read the result set. 
    ---> System.IO.EndOfStreamException: Expected to read 4 header bytes but only received 0.
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySqlConnector.Protocol.Serialization.ProtocolUtility.DoReadPayloadAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ArraySegmentHolder`1 previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:projectsmysqlconnectorsrcMySqlConnectorProtocolSerializationProtocolUtility.cs:line 462
       at MySqlConnector.Protocol.Serialization.StandardPayloadHandler.ReadPayloadAsync(ArraySegmentHolder`1 cache, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:projectsmysqlconnectorsrcMySqlConnectorProtocolSerializationStandardPayloadHandler.cs:line 37
       at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:projectsmysqlconnectorsrcMySqlConnectorCoreServerSession.cs:line 645
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:projectsmysqlconnectorsrcMySqlConnectorCoreServerSession.cs:line 1230
       at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
    --- End of stack trace from previous location where exception was thrown ---
    View Code

    然后我使用swagger+miniprofiler,查看生成的sql语句

     

    查看Mysql错误日志:

    Aborted connection 422 to db: '数据库名称' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

    可能因为传输的数据过大,而Mysql的max_allowed_packet默认为1024b,导致sql执行不成功。

    然后将Mysql配置文件中的max_allowed_packet值改为max_allowed_packet = 4M

    重启Mysql,问题解决。

    然而过了一段时间,同样的报错又出现了,首先看了下max_allowed_packet的值,果然max_allowed_packet又被修改为了1024b,查看命令如下:

    show variables like '%max_allowed_packet%';

    然后询问同事,他们说并没有动数据库,上网查了下说是有可能是被攻击了。

    于是我开启了Mysql的日志,命令如下:

    set global general_log=on;

    在日志里看到了被修改信息,然后看了下ip~~~

    还发现了几个新增用户TvT,把它删掉:

    查看Mysql用户命令如下:

    select * from mysql.user

     

    目前解决方法是,加强密码,限制远程连接ip:把上图的% 改为指定ip段xxx.xxx.xxx.%,重启Mysql。

  • 相关阅读:
    页面跳转
    获取gridview 某列的值
    C#日期格式化的几种处理方法(转)
    asp.net 退出 按钮
    asp.net控件大全(一)
    导出Excel
    DropDownList的二级联动 (SqlDataSource实现和SQL 绑定实现)
    asp.net控件大全(二)
    如何让Gridview在没有数据的时候显示表头(asp.net)
    自定义日期格式
  • 原文地址:https://www.cnblogs.com/tianyaguoke/p/10366148.html
Copyright © 2011-2022 走看看