Параметржүүлсэн SQL буюу бэлтгэсэн мэдэгдлүүд нь вэб програм боловсруулахад SQL тарилгын эмзэг байдлыг багасгахад ашигладаг техник юм. Энэ нь SQL асуулгад дараа нь хэрэглэгчийн нийлүүлсэн утгуудаар солигддог орлуулагчдыг ашиглах явдал юм. Асуулгын логикийг хэрэглэгчийн оролтоос салгаснаар параметржүүлсэн SQL нь хортой SQL кодыг гүйцэтгэхээс сэргийлдэг.
Вэб программ нь параметржүүлсэн SQL-г ашиглах үед хэрэглэгчийн оролтыг оруулахаас өмнө SQL асуулгыг эхлээд програмын сервер бэлтгэдэг. Асуулга нь хэрэглэгчийн өгсөн утгуудын орлуулагчийн хамт мэдээллийн сангийн сервер рүү илгээгдэнэ. Эдгээр орлуулагчийг ихэвчлэн асуултын тэмдэг эсвэл нэрлэсэн параметрээр төлөөлдөг. Дараа нь мэдээллийн сангийн сервер нь бодит утгыг харгалзахгүйгээр хайлтыг эмхэтгэж, оновчтой болгодог.
Асуулга бэлтгэгдсэний дараа хэрэглэгчийн оролт нь орлуулагчтай холбогдож, тэдгээрийг зохих утгуудаар солино. Холбох процесс нь хэрэглэгчийн оролтыг гүйцэтгэх код биш харин өгөгдөл гэж үзэхийг баталгаажуулдаг. Асуулгын логик болон хэрэглэгчийн оролтыг ингэж салгаснаар SQL шахалтын халдлагаас сэргийлдэг, учир нь өгөгдлийн сангийн сервер нь хэрэглэгчийн оролтыг асуулгын бүтцийн нэг хэсэг биш харин өгөгдөл болгон тайлбарлах ёстой гэдгийг мэддэг.
Параметржсэн SQL-ийг ашигласнаар вэб програмууд нь SQL-ийн тарилгын эмзэг байдлыг үр дүнтэй бууруулж чадна. Энэ аргын зарим гол давуу талууд энд байна:
1. SQL injection-ээс хамгаалах: Параметржүүлсэн SQL нь хэрэглэгчийн оролтыг өгөгдөл гэж үзэхийг баталгаажуулж, SQL кодыг хортойгоор оруулах боломжийг арилгадаг. Хэрэглэгчийн оролт нь тусгай тэмдэгтүүд эсвэл SQL синтакс агуулсан байсан ч гэсэн утга гэж тооцогддог тул үүнийг асуулгын бүтцийн нэг хэсэг гэж тайлбарлахгүй.
Жишээлбэл, параметргүйгээр дараах эмзэг SQL хайлтыг авч үзье.
SELECT * FROM users WHERE username = 'admin' AND password = '<user_input>';
Халдагчид энэ асуулгыг ашиглаж болох бөгөөд энэ нь хэрэглэгчийн оролтоор `' ЭСВЭЛ '1'='1' –` гэж оруулан нууц үгийн шалгалтыг үр дүнтэй алгасаж болно. Гэсэн хэдий ч параметржүүлсэн SQL-г ашигласнаар асуулга дараах байдалтай харагдана.
SELECT * FROM users WHERE username = 'admin' AND password = ?;
Хэрэглэгчийн оролт нь орлуулагчтай холбогдож, SQL оруулах оролдлогоос сэргийлдэг.
2. Гүйцэтгэлийг сайжруулсан: Параметржүүлсэн SQL асуулга нь нэг удаа бэлтгэгдэж, өөр өөр утгуудаар олон удаа ажиллах боломжтой. Энэ нь хайлтыг гүйцэтгэх бүрт задлан шинжилж, оновчтой болгох зардлыг бууруулдаг. Бэлтгэсэн мэдэгдлүүдийг өгөгдлийн сангийн сервер кэш хийх боломжтой бөгөөд ингэснээр байнга гүйцэтгэдэг асуулгын гүйцэтгэл сайжирна.
3. Синтаксийн алдаанаас урьдчилан сэргийлэх: Параметржүүлсэн SQL нь буруу форматлагдсан хэрэглэгчийн оролтоос үүссэн синтаксийн алдаанаас сэргийлэхэд тусалдаг. Өгөгдлийн сангийн сервер нь хэрэглэгчийн оролтыг өгөгдөл гэж үзэж, асуулгын бүтцэд саад учруулахгүй байхыг баталгаажуулдаг.
4. Өгөгдлийн сангийн хийсвэрлэл: Параметржсэн SQL нь өгөгдлийн санг илүү сайн хийсвэрлэх боломжийг олгодог, учир нь хэрэглээний код нь үндсэн өгөгдлийн сангийн тодорхой синтакс эсвэл бүтцийг мэддэг байх шаардлагагүй. Энэ нь програмын логикийг өөрчлөхгүйгээр өөр өөр мэдээллийн сангийн систем хооронд шилжихэд хялбар болгодог.
Параметржүүлсэн SQL нь вэб программ дахь SQL тарилгын эмзэг байдлыг багасгах хүчирхэг техник юм. Асуулгын логикийг хэрэглэгчийн оролтоос салгаж, хэрэглэгчийн өгсөн утгыг өгөгдөл болгон авч үзсэнээр параметржүүлсэн SQL нь SQL шахалтын халдлагаас найдвартай хамгаалалт болдог. Үүний давуу тал нь SQL injection-ээс хамгаалах, гүйцэтгэлийг сайжруулах, синтаксийн алдаанаас урьдчилан сэргийлэх, мэдээллийн санг илүү сайн хийсвэрлэх зэрэг орно.
Сүүлийн үеийн бусад асуулт, хариулт EITC/IS/WASF вэб програмын аюулгүй байдлын үндэс:
- Татаж авах мета өгөгдлийн хүсэлтийн толгой хэсэг гэж юу вэ, тэдгээрийг ижил гарал үүсэл болон сайт хоорондын хүсэлтийг хооронд нь ялгахад хэрхэн ашиглах вэ?
- Итгэмжлэгдсэн төрлүүд вэб програмын халдлагыг хэрхэн багасгаж, аюулгүй байдлын үнэлгээг хялбарчлах вэ?
- Итгэмжлэгдсэн төрлүүдийн өгөгдмөл бодлогын зорилго нь юу вэ, үүнийг аюулгүй бус мөрийн хуваарилалтыг тодорхойлоход хэрхэн ашиглах вэ?
- Итгэмжлэгдсэн төрлүүдийн API ашиглан итгэмжлэгдсэн төрлүүдийн объектыг үүсгэх процесс юу вэ?
- Агуулгын аюулгүй байдлын бодлого дахь итгэмжлэгдсэн төрлүүдийн заавар нь DOM-д суурилсан сайт хоорондын скриптийн (XSS) эмзэг байдлыг багасгахад хэрхэн тусалдаг вэ?
- Итгэмжлэгдсэн төрлүүд гэж юу вэ, вэб программ дахь DOM-д суурилсан XSS-ийн эмзэг байдлыг хэрхэн шийдвэрлэх вэ?
- Агуулгын аюулгүй байдлын бодлого (CSP) нь сайт хоорондын скриптийн (XSS) эмзэг байдлыг багасгахад хэрхэн туслах вэ?
- Сайт хоорондын хүсэлтийг хуурамчаар үйлдэх (CSRF) гэж юу вэ, түүнийг халдагчид хэрхэн ашиглах вэ?
- Вэб програмын XSS эмзэг байдал нь хэрэглэгчийн мэдээллийг хэрхэн эвддэг вэ?
- Вэб аппликешнүүдэд нийтлэг тохиолддог хоёр үндсэн эмзэг байдлын ангилал юу вэ?
EITC/IS/WASF Вэб Програмын Аюулгүй байдлын үндэс хэсгээс илүү олон асуулт, хариултыг харна уу