Тиркемелердеги SQL: параметрленген суроо-талаптар жана SQL-инъекция
Чыныгы программалар SQL'ди кантип коопсуз жөнөтөт -- жана чабуулчулар аны туура эмес кылгандарды кантип бузат
- тиркеме маалымат базасына кантип туташып, SQL жөнөткөнүн сүрөттөө,
- суроо-талаптарды саптарды бириктирүү аркылуу куруу эмне үчүн кооптуу экенин түшүндүрүү,
- SQL-инъекция чабуулунун анатомиясын окуу (кирүүнү айланып өтүү жана UNION аркылуу маалымат уурдоо),
- чабуулду жоюучу параметрленген суроо-талап / даярдалган билдирүү жазуу,
- бузулган суроо-талап мүмкүн болушунча аз зыян келтириши үчүн эң аз артыкчылык принцибин колдонуу.
1. Тиркеме SQL'ди кантип жөнөтөт
Мурда сиз SQL'ди клиентте кол менен аткарчусуз. Веб- же мобилдик тиркеме ошол эле нерсени жасайт, бирок программалык түрдө. Ал драйвер (Node.js үчүн mysql2, Java үчүн JDBC же Python үчүн psycopg сыяктуу китепкана) аркылуу базага туташуу ачат, суроо-талапты текст катары жөнөтөт жана саптарды кайра окуйт.
Маалымат базасы "колдонуучу" бар экенин таптакыр билбейт. Ал сапты алат, аны суроо-талапка ажыратат, аткарат жана саптардын жыйындысын кайтарат. Бул -- бүт теманын өзөгү: база өзүнө берилген каалаган SQL-текстке ишенет. Эгер кодуңуз четтеги адамга ошол текстке таасир этүүгө уруксат берсе, четтеги адам чынында сиздин серверде SQL жазып жатат.
Төмөндөгүлөрдүн баары бир кичинекей дүкөн базасын колдонот. Аны бир жолу түзөлү.