2009-02-10 55 views
0

我们目前正在从Server 2003迁移到Server 2008.我们对ASP.NET应用程序有几个不同的环境更改。我们的测试环境此时正在完美工作,但具有相同代码的生产机器将无效字符注入到SQL中。LINQ注入无效字符

以下是我通过SQL Server Profiler查看的SQL。

exec sp_executesql N'SELECT [t0].[VenuePDID], [t0].[VenueID], [t0].[VenueNumber], [t0].[MarketID], [t0].[ProgramID], [t0].[VenueTypeID], [t0].[SalesTypeID], [t0].[BackBarPaymentID], [t0].[Goal], [t0].[LocationTypeID], [t0].[VenueStatus], [t0].[Tab1ConfirmDate], [t0].[Tab1ConfirmedBy], [t0].[Tab2ConfirmDate], [t0].[Tab2ConfirmedBy], [t0].[DateContractRequested], [t0].[ContractRequestedBy], [t0].[ContractTypeRequested], [t0].[ContractAmtRequested], [t0].[ContractAmtLimit], [t0].[ContractSalesAmtRequested], [t0].[ContractSalesAmtMax], [t0].[ContractPerVistAmtLimit], [t0].[ContractSalesPerVisitAmtLimit], [t0].[ActiveDate], [t0].[InactiveDate], [t0].[WebsiteRejected], [t0].[ResponsibleGM], [t0].[CreateDate], [t0].[CreatedBः㐈 [1]  
[1] 볧इ퀄㐀޼SELECT [t0].dBy], [t0].[timestamp], [t0].[DetailConfirmDate], [t0].[DetailConfirmBy], [t0].[SalesConfirmDate], [t0].[SalesConfirmBy], [t0].[ContractTypeId] 
FROM [dbo].[tbl_VenueProgramDetails] AS [t0] 
WHERE ([t0].[VenueID] = @p0) AND ([t0].[ProgramID] = @p1)',N'@p0 int,@p1 int',@p0=7477,@p1=27 

我已经从工作测试环境中复制了所有的dll,并且得到了同样的结果。我也指出测试Web服务器在活动数据库和代码工程。我已经将实时Web服务器指向测试数据库,代码就像上面那样失败。此时,问题必须与生产服务器上的IIS7配置或.Net相关。我似乎无法指出这一点。有没有人看到过这个?

回答

1

该问题最终成为网卡驱动程序。物理机器不是配置或代码的问题。

编辑:我遇到问题的机器是带有Broadcom网卡的HP DL360。我们将就此问题与HP联系。在通过线路发送LINQ请求时,数据包组装错误。

0

CREATEDB \ u0903 \ u3408 [1] \ uffff

这不是一个真正的Unicode ... U + FFFF是明确地不是一个Unicode字符,对于一个!

东西似乎是在您的内存任意位上吐出二进制破坏。这不会很有趣,因为它很可能是令人不快的低级别的事情。您的应用程序是否使用了可疑的非托管组件,或生产计算机上是否存在ISAPI扩展? (或甚至其他钩子,如狡猾的反病毒?)

+0

你是对的,它不是Unicode。这是一个全新安装的服务器,没有ISAPI过滤器,除了ASP.NET 1.1和2.0。我正在运行我的3.5代码。你现在让我想知道这是否会像糟糕的记忆一样低。我禁用AV来测试那个残疾人。 – cjibo 2009-02-11 02:41:38