Geri çağırış Lim10Ata\Flatix\xfwidgets::gethtml yanlışdır (error_invalid_class).

Foruma xoş gəldiniz 👋, Qonaq

Forum məzmununa və bütün xidmətlərimizə daxil olmaq üçün qeydiyyatdan keçməli və ya foruma daxil olmalısınız. Foruma üzv olmaq tamamilə pulsuzdur.

Qeydiyyatdan kec

php Sql injecton açığı

  • Mövzu başlanğıcı SandWorm
  • Başlama tarixi
S

SandWorm

Guest
Çox sistemin əvvəldən və hələdə gümüzdə aktif olaraq buraxılan təhlükəszilik açığı “Sql Injection” yəni verilənlər bazası zəhərləmə işləmi.

Bəs bu “SQL Injection” nə işə yarıyır?

SQL Injection zəifliyi saytın verilənlər bazasına sızaraq məlumatların oğurlanmasına səbəb ola bilər.

Bəs bu proses necə həyata keçirilir?

Bu açıq php ilə verilənlər bazası sorğu edərkən string uygulaması ilə sql-də məsələn olaraq yazılar verilənlər bazasında axtarış edərkən o axtarışı dayandırı fərqli bir verilənlər bazasına keçib orada kı verilənləri göstərməsidir qısaca php ilə saytınızın axtarış bölümüə etdiiyniz axtar.php?s=yazi

Bəs bu problemi necə aradan qaldıraq?

Bunun üçün qısa bir funksiya hazırlamışıq, bu funksiya ilə siz aldığınız məlumatları sorğulaya biləcəksiniz.

<?php
function koruma($k) {
if(preg_match("/[\-]{2,}|[;]|[']|[\\\*]/",$k)) {
echo '';
exit;
} else {
echo '';
}
}

koruma($_GET["ara"]);
?>
Funksiya bu şəkildə bir işləm edər , veridə sql injection karakterləri varsa yəni ‘ kimi karakterlər varsa exit; ataraq bütün işləmləri sonlandırır.

koruma($veri); bu formada sorğu edə bilərsiniz.
 
3

xson

Try hard
Moderator
Qoşuldu
24 Avg 2022
Mesajlar
200
Reaksiya hesabı
51
Xallar
28
Məkan
Baku, Azerbaijan
Web sayt
qutb.az
Dırnaqlar varsa slashlar varsa str replace ilə onları silə də bilərsiz , və ya no qoutes ilə dırnaqları silə bilərsiz əvəzinə &quot şəklində qalar və s.
 
3

LOCALHOST

Kohnelerden
WebMaster
Qoşuldu
3 Sen 2022
Mesajlar
246
Reaksiya hesabı
116
Xallar
43
Salam, təşəkkürlər.
Mən qabağ core php ilə yazanda addslashes, htmspacielchars, striptags ilə filterləyirdim sorğuları.
Laravelə keçəndən laravelin öz ORM və QUERY BUİLDER sistemi bunları özü filtirləyir.
Amma yenədə bəzən row sql yazanda yenə yuxarıda yazdıqım filtirlər lazım olur
 
3

LOCALHOST

Kohnelerden
WebMaster
Qoşuldu
3 Sen 2022
Mesajlar
246
Reaksiya hesabı
116
Xallar
43
Laraveldə adicə insert əməliyyatı ORM ilə bu qədər sadə və optimizə edilmiş formadadır.

PHP:
User::create(['name' => 'Demo']);
 
S

SandWorm

Guest
Salam, təşəkkürlər.
Mən qabağ core php ilə yazanda addslashes, htmspacielchars, striptags ilə filterləyirdim sorğuları.
Laravelə keçəndən laravelin öz ORM və QUERY BUİLDER sistemi bunları özü filtirləyir.
Amma yenədə bəzən row sql yazanda yenə yuxarıda yazdıqım filtirlər lazım olur
Dəyməz
 
2

SoxulcanPRO

Aktiv istifadeci
WebMaster
Qoşuldu
26 Mar 2023
Mesajlar
81
Reaksiya hesabı
38
Xallar
18
1) SQL Enjeksiyonundan qorunmaq üçün aşağıdakı üsulları tətbiq edə bilərsiniz:

PDO və ya mysqli istifadə edin: PDO və mysqli SQL Injection-a qarşı daha təhlükəsiz olan hazır funksiyaları və funksiyaları təmin edir.
Nümunə PDO bağlantısı:


PHP:
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  // PDO səhv hesabatını aktivləşdirin
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Bağlantı başarılı";
} catch(PDOException $e) {
  echo "Bağlantı hatası: " . $e->getMessage();
}


2) Təhlükəsiz məlumat girişi edin: Sorğularınızda istifadəçi tərəfindən daxil edilmiş məlumatlardan birbaşa istifadə etməyin. Məlumat daxiletmələrini filtrləyin, qaçış simvolları əlavə edin və ya parametrlərdən istifadə edin.

Escape simvolunun istifadəsi nümunəsi:

PHP:
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

3) Parametr istifadəsi nümunəsi:

PHP:
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

1) Təhlükəsizliyi artırmaq üçün istifadəçi icazəsini təmin edin: İstifadəçilərə yalnız icazəsi altında olan məlumatlara daxil olmağa icazə verin. Məsələn, istifadəçinin yalnız oxumaq üçün icazələri varsa, yazma əməliyyatlarına icazə verilməməlidir.

2) Sorğularınızdakı istifadəçi daxiletmələrini təsdiq edin: İstifadəçi daxiletmələrinin gözlənilən məlumat növünə uyğun olduğundan əmin olun. Məsələn, bir nömrə gözlənilirsə, istifadəçi daxiletməsi nömrə olmalıdır.

3) Yeniləmələri və yamaqları quraşdırın: Təhlükəsizlik zəifliklərindən qorumaq və yamaqları quraşdırmaq üçün istifadə olunan texnologiyaları və proqram təminatını mütəmadi olaraq yeniləyin.
 
Üst