Sobes.tech
Junior — Middle

Ներկայացրեք, թե ինչ է ենթադրվում SQL կոդերի ներդրման մեթոդը ծրագրում և ինչպես կանխել դա։

sobes.tech AI

Պատասխան AI-ից

SQL ինժեքցիան մեթոդ է հարձակման, որի ժամանակ հարձակվողը մուտք է գործում կամ ներմուծում վնասակար SQL կոդ տվյալների բազայի հարցումների մեջ, օգտագործելով օգտվողի կողմից մուտքագրված տվյալները: Սա թույլ է տալիս անօրինական մուտք գործել տվյալների, փոխել կամ ջնջել դրանք:

Go ծրագրերում SQL ինժեքցիան կանխելու համար անհրաժեշտ է:

  • Օգտագործել պատրաստված արտահայտություններ (prepared statements) պարամետրավորմամբ, որտեղ արժեքները մուտքագրվում են առանձին SQL կոդից:
  • Աշխատել string-ների կոնկատենացիայից SQL հարցումների ձևավորման ժամանակ օգտագործվող տվյալների հետ:
  • Օգտագործել ORM գրադարաններ, որոնք ավտոմատ կերպով մշակում են պարամետրերը:
  • Վալիդացնել և ֆիլտրել օգտվողի մուտքագրված տվյալները:

Օրինակ՝ օգտագործելով պատրաստված արտահայտություն Go-ում:

import (
    "database/sql"
    _ "github.com/lib/pq"
)

func getUserByEmail(db *sql.DB, email string) (*User, error) {
    var user User
    err := db.QueryRow("SELECT id, name FROM users WHERE email = $1", email).Scan(&user.ID, &user.Name)
    if err != nil {
        return nil, err
    }
    return &user, nil
}

Այստեղ email պարամետրը փոխանցվում է առանձին, ինչը բացառում է վնասակար SQL կոդի ներմուծումը։