मैं एक वेब पार्ट डिज़ाइन कर रहा हूं जहां उपयोगकर्ता खोज वाक्यांश दर्ज कर सकते हैं जिसके लिए MOSS खोज अनुक्रमणिका मांगी गई है। मैं खोज के लिए FullTextSqlQuery
कक्षा का उपयोग करता हूं।शेयरपॉइंट एंटरप्राइज़ एसक्यूएल खोज वाक्यविन्यास में एसक्यूएल इंजेक्शन
जब मैं अपना select
कथन बनाता हूं, तो मुझे स्पष्ट रूप से इसमें उपयोगकर्ता के इनपुट को शामिल करने के लिए concatenation का उपयोग करना होगा। (?)
SELECT title, author from portal..scope()
WHERE ("SCOPE" = 'TheDocuments')
AND CONTAINS(MYPROPERTY, 'TheValueThatuserSpecified')
तो, सवाल है, मैं कैसे एसक्यूएल उपयोगकर्ता इनपुट से इंजेक्शन से बचने के है: अंतिम बयान कुछ इस तरह होना चाहिए? क्या इसके लिए कुछ विशिष्ट उपयोगिता कार्य है? PHP/mysql प्रोजेक्ट्स में मैं mysql_real_escape_string
का उपयोग करूंगा। शेयरपॉइंट नेमस्पेस में कुछ भी समान है?
सच है, लेकिन इस तरह उपयोगकर्ता किसी भी तरह से खोज वाक्यांश जैसे '') दर्ज कर सकता है और इसमें शामिल है (ANOTHERPROPERTY, 'Anothervalue) या (SCOPE =' AnotherScope'। यह एक वैध खोज क्वेरी प्रस्तुत करता है, लेकिन काफी अलग तरीके से। मुद्दा यह है - आपको एस्ट्रोफ़ेस, उद्धरण इत्यादि से बचने का ख्याल रखना है। – naivists
अनुबंध भविष्यवाणी केवल प्रबंधित गुणों के विरुद्ध काम करेगी जिन्हें पूर्णTextQueriable के रूप में सक्षम किया गया है। इसके अलावा, पुनर्प्राप्त करने योग्य ध्वज। यह ध्वज किसी प्रबंधित संपत्ति के मान को वापस आने से रोकता है चयन कथन में कॉलम। –
इसके अलावा, खोज परिणाम सुरक्षा छंटनी की जाती हैं, इसलिए यदि आप चलाने के लिए अपनी इंजेक्शन वाली क्वेरी प्राप्त करने का प्रबंधन करते हैं तो आपको केवल वही परिणाम मिलेगा जिनके लिए आपके पास सामान्य रूप से पहुंच है। –