.NET या इसकी कई भाषाओं में से अविश्वसनीय डेटा की सफाई को लागू करने के लिए लागू करें या गलत में आकस्मिक चर उपयोग को रोकें स्थानों?"स्वच्छ" डेटा की आवश्यकता वाले कार्यों के खिलाफ उपयोग किए जाने वाले गंदे डेटा को रोकने के लिए विस्तार प्रकार सुरक्षा सुरक्षा
इसका एक उदाहरण यह है कि जब उपयोगकर्ता पोस्ट का डेटा और "कच्चे" प्रतिक्रिया SQL लेनदेन के भीतर उपयोग की जाती है। इससे क्लाइंट-साइड स्क्रिप्टिंग भेद्यता से पूरे सर्वर से समझौता किया जा सकता है।
एक और उदाहरण है जहां मुझे आगे की प्रक्रिया के लिए डेटा को COM ऑब्जेक्ट में पास करना होगा।
सी #, एएसपीनेट, और एसक्यूएल डेवलपर के रूप में मेरे विकल्प क्या हैं यह सुनिश्चित करने के लिए कि मेरे उपयोगकर्ता की गंदे बिट साफ होने से पहले आंतरिक को छूएं? क्या रनटाइम (या कंपाइलर) की एक विशेषता है जो मैं लीवरेज कर सकता हूं?
भाषा वास्तव में इसे लागू करने के लिए छोटा है, शायद मैं अपने आने वाले चरों में _dirty का प्रत्यय जोड़ सकता हूं। क्या यह कुछ है जो आप एक सर्वोत्तम अभ्यास के रूप में सिफारिश करेंगे?
पेशेवर इस समस्या से कैसे संपर्क करते हैं?
अद्यतन
यहाँ वैचारिक दिशा मैं
जा रहा था है यह कुछ हद तक दिए गए अब तक (विशेष रूप से SteveCzetty और Erlend) जवाब
उदाहरण के लिए के आधार पर प्रेरित है:
public Interface ICleanForJavascript { bool IsCleanForJavascript(); }
public Interface ICleanForXSS { bool IsCleanForJavascript(); }
public class DirtyData
{
string Name {get; set;}
}
public class CleanData
{
private CleanData() {}
string Name {get; private set;}
// Perhaps use casting to support the conversion from Dirty to Clean data
// Might use this in an option explicit DirtyData CleanData(object o); command
public static CleanData Validate(DirtyData d)
{
CleanData data = new CleanData();
if (ValidateString(d.Name))
{
data.Name = d.Name
}
else
{
throw new ValidationException();
}
return CleanData;
}
}
[RequiresCleanedDataAttribute(ICleanForJavascript)]
public void DoSomething(CleanData data)
{
//...
}
Attribute RequiresCleanedDataAttribute(object arrayOfCleanings[])
{
// do some reflection on the method signature and see if the object supports the required interfaces
}
उपरोक्त के साथ, तो:
DoSomething(new DirtyData()); // Compiler Error, or runtime error if Attribute validation fails
DoSomething(CleanData.Validate(new DirtyData())); // Compiles
मैं किसी भी तकनीक है कि एक संकलक त्रुटि गंदा डेटा गलत जगह पर भेजा जाता है जब फेंक होगा देखना चाहते हैं। – LamonteCristo
अत्यधिक व्यापक प्रश्न –