2009-02-10 54 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