ความหมายของความปลอดภัยของ sp_executesql คืออะไร


9

โดยค่าเริ่มต้นใน SQL Server ที่[public]มีบทบาทสิทธิEXECUTEsp_executesql

แต่ผมได้รับมรดกเซิร์ฟเวอร์ฐานข้อมูลที่ DBA ก่อนหน้านี้ได้มีการเพิกถอนขวาบนEXECUTEsp_executesql

ในฐานะวิธีแก้ปัญหาชั่วคราวฉันได้ให้EXECUTEสิทธิsp_executesqlในการใช้งานตามความจำเป็น (ผ่านบทบาทในฐานข้อมูลหลัก) แต่นี่เป็นจุดเริ่มต้นของความเจ็บปวดในการบำรุงรักษา

หากฉันมอบEXECUTEคืนสู่สาธารณะมีผลกระทบใดที่ฉันต้องระวังหรือไม่?

คำตอบ:


8

ไม่มี. sp_executesqlเรียกใช้งาน SQL ภายใต้บริบทและสิทธิพิเศษเดียวกันกับที่ผู้เรียกดั้งเดิมจะเรียกใช้งานSQL เดียวกัน มีหลายกรณีเมื่อ SQL แบบไดนามิกไม่สามารถหลีกเลี่ยงได้


3
-1 เพราะคำตอบไม่ได้ระบุว่าไมโครซอฟท์บันทึกว่าอาจมีความเสี่ยงด้านความปลอดภัยmsdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173

@ miracle173 - เพื่อความเป็นธรรมมันจะเขียนไม่ดี SQL sp_executesqlแบบไดนามิกที่มีความเสี่ยงด้านความปลอดภัยไม่ได้ การสันนิษฐานความต้องการ SQL แบบไดนามิกจากนั้นการปิดใช้งานsp_executesqlอาจเพิ่มความเสี่ยงได้อย่างน้อยจริง ๆ ซึ่งช่วยให้คุณสามารถกำหนดพารามิเตอร์การสืบค้น (ไม่เหมือนEXEC)
Martin Smith

2
ในขณะที่ความเสี่ยงของการฉีด sql ไม่สามารถประเมินได้ต่ำกว่าการปิดใช้งานsp_executesqlไม่ใช่การบรรเทาที่เหมาะสม ข้อผิดพลาดการฉีด SQL ที่ท่วมท้นส่วนใหญ่เกิดขึ้นในไคลเอนต์เมื่อคำสั่ง SQL ถูกสร้าง 'ด้วยมือ' โดยการต่อชิ้นส่วนของ SQL กับตัวแปรอินพุตแล้วเรียกใช้งาน 'ตามที่เป็น' สำหรับทุกกรณีที่sp_executesqlถูกปิดการใช้งานจะไม่ช่วยอะไรเลย
Remus Rusanu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.