Middle+
SQL-инъекция дегеніміз не? Әлсіз сұраудың мысалын және қорғау әдістерін келтіріңіз.
sobes.tech AI
AI-дан жауап
SQL-инъекция — бұл қауіпсіздік осалдығы, онда злоумышленник пайдаланушы енгізген деректер арқылы мәліметтер базасына зиянды SQL кодын енгізе алады. Бұл рұқсатсыз қол жеткізуге, деректерді өзгертуге немесе жоюға әкелуі мүмкін.
Go тілінде осал сұраудың мысалы:
username := r.FormValue("username")
query := fmt.Sprintf("SELECT * FROM users WHERE username = '%s'", username)
rows, err := db.Query(query)
Егер пайдаланушы username ретінде ' OR '1'='1 енгізсе, сұрау келесідей болады:
SELECT * FROM users WHERE username = '' OR '1'='1'
бұл барлық жазбаларды қайтарады.
Қорғау әдістері:
- Дайындалған өрнектерді (prepared statements) параметрлеу арқылы пайдалану:
stmt, err := db.Prepare("SELECT * FROM users WHERE username = ?")
rows, err := stmt.Query(username)
- Пайдаланушы енгізген деректерді тексеру және өңдеу.
- Автоматты түрде инъекциядан қорғайтын ORM пайдалану.
- Мәліметтер базасына қол жеткізу құқықтарын шектеу.
Осылайша, негізгі қорғау — сұрауларды параметрлеу, ол SQL кодын деректерден бөледі.