Kullanıcıların '<' parolasını kullanmasına izin vermek istediğim bir ASP.NET 4 sitem var. Ancak, .NET bir form alanına HTML koyma girişimini engelliyor (ne görüyorsa). Giriş onaylamayı tamamen kapatabileceğimi biliyorum, ancak sadece bu alan için kapatmak istiyorum. Bunu yapmanın kolay bir yolu var mı?Tek bir alan için giriş doğrulamayı kapatın
cevap
Sadece sayfanın tamamı için giriş doğrulamasını kapatabilirsiniz. Düşünebildiğim tek çözüm, giriş doğrulamasını kapatmak ve diğer tüm (şifre olmayan) giriş alanlarını Anti-XSS gibi bir şey kullanarak fırçalamaktır.
Örneği alıntılamadan bir bağlantıya işaret ettiğiniz için teşekkür ederiz. Ölü bağlantı şimdi –
Bu bir örnek değil, anti-xss işlevselliği sağlayan bir kütüphaneye bir bağlantıydı. Şimdi https://www.nuget.org/packages/AntiXSS/4.3.0 adresinde. –
Üzgünüm, ama şimdi aşağı oyumu geri alamıyorum. Gönderinizi yeni bağlantıyla düzenleyebilir misiniz? Böylece bunu yapabilirim? –
ValidateInputAttribute'u kullanarak tek MVC eylemi için giriş doğrulamayı kapatabilirsiniz. Sadece kullanıcı adını/şifreyi kabul ettiğinden (varsayalım), herhangi bir geçersiz karakterin girişini kendiniz temizleyebilmelisiniz. Bunu yapmak için Microsoft Web Protection Library kullanın.
Bu Webforms, MVC değil ve ben Bu sayfada çok fazla giriş var. Aksi takdirde bu harika çalışacaktır :) – eliah
Mah kötü. Sadece belirli bir sayfa için doğrulamayı kapatmak için kullanabileceğiniz @Page yönergesinde bir ValidateRequest özelliği vardır, ancak bence bu alabileceğiniz kadar ayrıntılıdır. –
ASP.NET 4'teki ve daha yüksek değerlerde @Page yönergesinde ValidateRequest'i almak için web.config dosyasına <httpRuntime requestValidationMode="2.0" />
eklemeniz gerekir. Ayrıntılar için bu sayfaya bakın: http://www.asp.net/whitepapers/aspnet4/breaking-changes
Ama bu benim tercih yaklaşımdır:
namespace Controls
{
public class HtmlTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
bool res = base.LoadPostData(postDataKey, postCollection);
Text = Text.Replace("<", "<").Replace(">", ">").Replace("&", "&");
return res;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "htmlTextBox" + UniqueID, "try { var item = document.getElementsByName('" + UniqueID + "')[0]; item.value = item.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); } catch (err) {}");
}
}
}
Sonra web.config'de denetimi kaydetmek:
<system.web>
<pages>
<controls>
<add tagPrefix="uc1" namespace="Controls" />
</controls>
</pages>
</system.web>
sadece <uc1:HtmlTextBox runat="server" />
kullanabilirsiniz Bu şekilde metin kutusunun html göndermesine izin vermek istiyorsanız, ancak sayfadaki diğer denetimler hala ValidateRequest'i kapatma yaklaşımının tersine html göndermekten engellenir.
Bu mümkündür. Doğrulanmaması gereken mülke yalnızca [AllowHtml]
kodunu ekleyin.
Bu .NET 4.5 ile artık mümkün ValidateInputAttribute does not contain a definition for Exclude
görüyoruz.
Güncelleme Web.config:
<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
Sonra şifrenizi denetimlere ValidateRequestMode="Disabled"
ayarlayın:
<asp:YourControl id="YourControl" runat="server" ValidateRequestMode="Disabled"/>
Not - web.config güncelledikten sonra, sizin için ASP.Net 2012 Unobtrusive Validation with jQuery Bkz hata WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'.
içine çalışabilir Bunun hakkında daha fazla bilgi. RequestValidationMode 4.5 üzerinde
diğer bilgiler: requestValidationMode 4.5 vs 2.0
- 1. Tek bir alanın uygun doğrulamayı çağırmak için değeri nasıl güncelleştirilir
- 2. Tek bir istek için sertifika doğrulamayı devre dışı bırakma
- 3. İki giriş için tek etiket
- 4. Decode tek alan
- 5. Alan giriş metni nasıl hizalanır?
- 6. Tek bir belgede tek bir alan için ham Solr belirteçleri görüntüleme
- 7. Tarayıcıyı kapatmadan kapatın System.in
- 8. Kod ilk doğrulamayı geçmiyor
- 9. Spring-cloud-stream Alan 'spring.cloud.stream' nesnesindeki alan hatası 'bağlamalarda [giriş]'
- 10. Çekirdeği doğrulama programsal olarak kapatın (javax.validation.constraints)
- 11. Tüm alan takma adlarını htaccess ile tek tek yönlendiriliyor
- 12. Başka bir JFrame'i kapatmadan kapatın
- 13. belirli bir komut istemini kapatın
- 14. Webtocket bağlantısını bir mesajla kapatın
- 15. polar matplotlib arsası için eksen sınırını kapatın
- 16. JQuery Doğrulama - Yalnızca bir alan için onfocusout'u devre dışı bırakma
- 17. Bir AVPlayer'da bir HTTP Canlı Akışı'nı kapatın
- 18. Tek bir alanda birden çok alan değeri göstermeFotoğraf
- 19. Angular2 bileşen tek yönlü bağlama veya giriş?
- 20. Tek sayfa uygulama Angularjs Django giriş formu
- 21. Parçada otomatik döndürmeyi kapatın
- 22. kodlamada ajax içinde doğrulamayı göster
- 23. asp.net gerekli alan doğrulayıcı devre dışı bırak düğmesi giriş formuna girme
- 24. C# konsol uygulamasını kapatın?
- 25. FtpWebRequest'i kapatın/yok edin
- 26. MySQL: Aşağıdaki sözdizimini kullanmak isteyen bir giriş çoğaltma için bir alan
- 27. Giriş değişikliği için çağrılmayan yönerge
- 28. Tek bir dizi parametresi alan bir kurucu için Yeni Nesne'yi nasıl ararım?
- 29. Android'i kapatın Bildirim
- 30. Tek bir formda üç giriş dosyaları alanı ve veritabanına kaydetme
bir şifre olması
@ eddy556 - özel bir nedene ihtiyacı var mı? – Oded
@Oded - Tabii ki, ekstra bir karaktere sahip olmanın avantajlarını anlayabiliyorum, ancak eğer doğruysa, neden sadece akla geliyor. –