2010-09-27 13 views
5

मुझे एक एएसपी.NET 4 साइट मिली है जिस पर मैं लोगों को अपने पासवर्ड में '<' डाल सकता हूं। हालांकि, HTML को फॉर्म फ़ील्ड में डालने का प्रयास अवरुद्ध करके (जो इसे देखता है) द्वारा .NET रास्ते में आता है। मुझे पता है कि मैं पूरी तरह इनपुट सत्यापन बंद कर सकता हूं, लेकिन मैं इसे केवल एक फ़ील्ड के लिए बंद करना चाहता हूं। क्या किसी को ऐसा करने का एक आसान तरीका पता है?एक फ़ील्ड के लिए इनपुट सत्यापन बंद करें

+0

कोई विशेष कारण है कि आप एक पासवर्ड में होना चाहिए <है? –

+9

@ eddy556 - क्या उसे एक विशेष कारण की आवश्यकता है? – Oded

+0

@ ओडेड - निश्चित रूप से वह करता है, मैं एक अतिरिक्त चरित्र रखने के फायदों को समझ सकता हूं, लेकिन यदि यह सच है तो वह केवल <और अन्य स्क्रिप्ट वर्णों को क्यों अनुमति देना चाहता है? > दिमाग में आता है। –

उत्तर

0

आप केवल पूरे पृष्ठ के लिए इनपुट सत्यापन बंद कर सकते हैं। एकमात्र समाधान जो मैं सोच सकता हूं वह इनपुट सत्यापन को बंद करना है, और उसके बाद Anti-XSS जैसे किसी अन्य का उपयोग करके अन्य सभी (गैर-पासवर्ड) इनपुट फ़ील्ड को साफ़ करना है।

+0

उदाहरण उद्धृत किए बिना किसी लिंक को इंगित करने के लिए धन्यवाद। मृत लिंक अब –

+1

यह एक उदाहरण नहीं है, यह एक पुस्तकालय का एक लिंक था जो एंटी-एक्सएसएस कार्यक्षमता प्रदान करता है। अब https://www.nuget.org/packages/AntiXSS/4.3.0 पर। –

+0

ठीक है क्षमा करें, लेकिन अब मैं अपने डाउन-वोट को पूर्ववत नहीं कर सकता। क्या आप अपनी पोस्ट को नए लिंक से संपादित कर सकते हैं ताकि मैं ऐसा कर सकूं? –

0

आप ValidateInputAttribute का उपयोग कर एकल एमवीसी क्रिया के लिए इनपुट सत्यापन बंद कर सकते हैं। चूंकि आप केवल उपयोगकर्ता नाम/पासवर्ड स्वीकार कर रहे हैं (मुझे लगता है) आप किसी भी अमान्य वर्णों के इनपुट को साफ़ करने में सक्षम होना चाहिए। ऐसा करने के लिए Microsoft Web Protection Library का उपयोग करें।

+0

यह वेबफॉर्म है, एमवीसी नहीं, और मैं इस पृष्ठ पर बहुत सारे इनपुट हैं। अन्यथा यह बहुत अच्छा काम करेगा :) – eliah

+1

महोदया खराब। @Page निर्देश पर एक ValidateRequest प्रॉपर्टी है जिसका उपयोग आप उस विशेष पृष्ठ के लिए केवल सत्यापन को बंद करने के लिए कर सकते हैं, लेकिन मुझे लगता है कि यह जितना हो सके उतना दानेदार है। –

0

एएसपी.NET 4 और उच्चतर में नोट करने के लिए @Page निर्देश में ValidateRequest प्राप्त करने के लिए आपको <httpRuntime requestValidationMode="2.0" /> को web.config में जोड़ने की आवश्यकता है। जानकारी के लिए इस पेज देखें: http://www.asp.net/whitepapers/aspnet4/breaking-changes

लेकिन यह मेरी पसंदीदा तरीका है:

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("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&"); 
      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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); } catch (err) {}"); 
     } 
    } 
} 

और फिर web.config में नियंत्रण रजिस्टर:

<system.web> 
    <pages> 
    <controls> 
     <add tagPrefix="uc1" namespace="Controls" /> 
    </controls> 
    </pages> 
</system.web> 

इस तरह से आप बस <uc1:HtmlTextBox runat="server" /> उपयोग कर सकते हैं यदि आप टेक्स्टबॉक्स को एचटीएमएल पोस्ट करने की इजाजत देना चाहते हैं, लेकिन पेज पर अन्य नियंत्रण अभी भी वैधता को बंद करने के दृष्टिकोण के विपरीत एचटीएमएल पोस्ट करने से अवरुद्ध हो जाएंगे।

1

देखना यह अब .NET 4.5 के साथ संभव है। अपने Web.config

अद्यतन:

<httpRuntime targetFramework="4.5" requestValidationMode="4.5" /> 

फिर अपना पासवर्ड नियंत्रण पर ValidateRequestMode="Disabled" सेट:

<asp:YourControl id="YourControl" runat="server" ValidateRequestMode="Disabled"/> 

नोट - web.config को अद्यतन करने के बाद, आपको त्रुटि WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'. में आ सकते हैं के लिए ASP.Net 2012 Unobtrusive Validation with jQuery देखें उस पर अधिक जानकारी। RequestValidationMode 4.5 पर

और जानकारी: requestValidationMode 4.5 vs 2.0

संबंधित मुद्दे