1
เราควรใช้ QUOTENAME เพื่อป้องกันการโจมตีจากการฉีดหรือไม่
ฉันดูขั้นตอนการจัดเก็บแบบเก่าวันนี้และสังเกตว่ามันใช้quotenameกับพารามิเตอร์อินพุต หลังจากขุดลงไปเพื่อหาว่ามันทำอะไรฉันก็เจอเว็บไซต์นี้ ตอนนี้ฉันเข้าใจแล้วว่ามันทำอะไรและจะใช้อย่างไร แต่เว็บไซต์บอกว่ามันถูกใช้เพื่อลดการโจมตีจากการฉีด SQL เมื่อฉันใช้ในการพัฒนาแอพที่สอบถามฐานข้อมูลโดยตรงโดยใช้ asp.net ฉันจะใช้พารามิเตอร์ ADO.Net เพื่อส่งผ่านการป้อนข้อมูลของผู้ใช้เป็นค่าที่แท้จริงและไม่เคยกังวลเกี่ยวกับการปกป้องในขั้นตอนการจัดเก็บของฉัน ตอนนี้ฉันกำลังเขียนโพรซีเดอร์ที่เก็บไว้ซึ่งจะถูกใช้โดยแอปพลิเคชันที่ฉันไม่ได้เขียนดังนั้นฉันจึงจำเป็นต้องลองและป้องกันจากการโจมตีของการฉีดที่ระดับโพรซีเดอร์เป็นquotenameวิธีที่ดีที่สุดในการทำสิ่งนี้ วิธี? รหัสที่ทำให้ฉันในรูปแบบความคิดนี้ ( @parm1เป็นพารามิเตอร์ที่ผู้ใช้ป้อน): 'SELECT project [Project], project_desc [Description], customer [Customer], cpnyid [Company] FROM PJPROJ (nolock) where project like ' + quotename(@parm1,'''') + '