के लिए सी # में सरल एसक्यूएल प्रश्नों से कैसे बचें मैं एक एसपीआई स्ट्रिंग की अपेक्षा करता हूं जो एक एपीआई का उपयोग करता है। मैं उपयोगकर्ता इनपुट लेता हूं, इसे से बचता हूं और एपीआई के साथ पास करता हूं। उपयोगकर्ता इनपुट काफी सरल है। यह कॉलम मानों के लिए पूछता है। इसलिए जैसा:एसक्यूएल सर्वर
string name = userInput.Value;
तो मैं एक एसक्यूएल क्वेरी बना:
string sql = string.Format("SELECT * FROM SOME_TABLE WHERE Name = '{0}'",
name.replace("'", "''"));
यह पर्याप्त सुरक्षित है? यदि ऐसा नहीं है, वहाँ है कि स्तंभ मान सुरक्षित बनाने के लिए एक सरल पुस्तकालय समारोह है:
string sql = string.Format("SELECT * FROM SOME_TABLE WHERE Name = '{0}'",
SqlSafeColumnValue(name));
एपीआई डेटाबेस के रूप में SQLServer उपयोग करता है।
आप ** जरूरत ** पैरामीटर का उपयोग करने के लिए। – SLaks
@SLaks, स्पष्ट है कि एपीआई इसे अनुमति नहीं देता है। शायद उसे एक नई एपीआई चाहिए। –
@ एसआरआई आपको बेहतर जवाब मिलेगा यदि आप समझते हैं कि आप पैरामीटर का उपयोग क्यों नहीं कर सकते/नहीं करेंगे। – Foole