2015-05-31 18 views
6

Ben garip güvenlik ile ilgili bir sorun yaşıyorum, ben nvarchar (130):Hashed password, bazen 128 karakterden daha uzun

olan bir SQL Server veritabanı alanına hashed şifreleri girmeye çalışırken düzenli ama aralıklı hatalar alıyorum
<cfqueryparam value="#hashpass#" cfsqltype="cf_sql_char" maxLength="130"> 

HashPass değişkeni böylece ayarlanır: dokümantasyon her zaman tam olarak 128 olması gerektiğini söylüyor, bunun 128 karakterden daha uzun bir SHA-512 karma için nasıl mümkün

<cfset hashpass = Hash(arguments.password & getsalt.user_salt, "SHA-512")> 

merak ediyor musunuz? İşte ColdFusion 10 hatası:

[Macromedia] [SQLServer JDBC Sürücüsü] [SQLServer] Dize veya ikili veriler kesilecek.

+2

(Düzeltme) AFAIK, evet, hex olarak kodlanmış 512 bit değer/128 karakter oluşturmalıdır. Hata oluştuğunda gerçek değerler nelerdir? – Leigh

+0

Keşke çalışılan hatayı yeniden üretmeye çalıştığımda başarısız olan gerçek değerleri biliyor olsaydım. Deneme/yakalama yapabilir ve kendimden başarısız olan değerleri e-postayla gönderebilirim, denediğimde düzenli olarak olur. –

+0

Deneyin/yakalama ruhunda, Application.cfc dosyanızın onErrror() işlevi ne yapar? –

cevap

3

Sorununuz bir veritabanı düzeyinde, ColdFusion maxlengthcfqueryparam etiketini kontrol etmediğinden ve sorgu yürütülmesine izin verdiği gibi hatadan görünüyor. Sadece hatayı (CF-10 üzerinde) maxlength özelliğinde belirtilen uzunluğu aşıyor bir dize geçmek ve almaya çalışırken test: soruya yorum olarak bahsedilen Adam Cameron gibi

The cause of this output exception was that: 
coldfusion.tagext.sql.QueryParamTag$InvalidDataException: 
Invalid data value this-is-a-string-that-is-too-long exceeds maxlength setting 10..` 

, bunun bir olduğunu olası görünüyor Sorgunuzdaki farklı alan, hatayı atar.

Karma parola 128 karakter uzunluğunda olacağından, 130 karakterin doğrulanması için bir neden var mı?

+0

Herkese teşekkürler. Bu hata numarasını tam olarak aldığım için ... bu ekin verilerinin çoğu başka bir tablodan geliyordu. biraz daha uzun ... yani, hedef tablodaki alan boyutlarını eşleşecek şekilde ayarlayın. –

İlgili konular