1. Visų pirma turite išsiaiškinti, ar pas jus puslapyje yra spragų, tiek sql injection tiek XSS spragas galima rasti, be jokios programinės įrangos, bet aš rekomenduoju naudoti programą pavadinimu Acunetix Web Vulnerability Scanner, ja naudotis itin paprasta, suvedi puslapio adresą ir spaudi mygtuką start, programa per tam tikrą laiko tarpą nuskaitys visą jūsų puslapį, ir raudonai pateiks rimčiausias spragas, su visa informacija apie tą spragą, konkrečiai infomaciją apie tą kintamajį/kintamuosius kuris/kurie yra nesaugūs. Torrent linkai parsisiusti programą https://thepiratebay.se/search/Acunetix ... ner/0/99/0
Programos scan lango su spragomis pavyzdys:
2. Jeigu spragos pavadinimas: Cross Site Scripting (XSS)
Naudodamasis šia spraga, įsilaužėlis gali siųsti kenkėjišką kodą naudodamasis javascript formomis, taip jis gali išgauti informaciją apie kitus vartotojus, padaryti keitimus duomenų bazėse ar net išgauti duomenų bazės vartotojo prisijungimo duomenis.
Problemos sprendimas:Sprendimų yra ganėtinai daug, kaip pavydžiui pateiksiu vieną su PHP. Jums reikia filtruoti metacharacters, tai galite padaryti naudodami komandą escapeshellcmd()
Pavyzdys:
Code: Select all
$privilegija_POST = $_POST["privilegija"]; // šį kodą keičiam į:$privilegija = escapeshellcmd($privilegija_POST);
su Mysqli:
Code: Select all
$privilegija_POST = $mysqli->real_escape_string($privilegija_POST); // bus plačiau prie sql injection
Code: Select all
$privilegija_POST->execute(array(':privilegija' => $_SESSION['privilegija']) ); // bus plačiau prie sql injection
Ši spraga yra dažniausiai pasitaikanti, o ir ja pasinaudoti gali beveik kiekvienas turintis PHP pagrindus, ar nuovokos naudojantis google paieškos sistema. Naudodamasis šia spraga įsilaužėlis gali gauti visą informaciją iš jūsų duomenų bazių, ją redaguoti, ištrinti.
Problemos sprendimas: Variantų taipogi yra daug naudojantis tiek PHP, tiek Mysqli, tiek PDO.
Vienas iš variantų naudojantis įrastu PHP: suradus _POST arba _GET:
Code: Select all
$page = $_GET['page'];$country = $_GET['country'];
Code: Select all
$page = mysql_real_escape_string($_GET['page']);$country = mysql_real_escape_string($_GET['country']);
Code: Select all
addslashes();
Code: Select all
phpinfo();
Code: Select all
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute(array('name' => $name)); foreach ($stmt as $row) { // do something with $row}
Code: Select all
$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');$stmt->bind_param('s', $name); $stmt->execute(); $result = $stmt->get_result();while ($row = $result->fetch_assoc()) {}
Pavyzdys su amxbans 6.xx Blind sql injection ir kaip tai sutvarkyti:
---------------------------------------------------------------------------------
į ban_details.php po session_start(); eilutės įrašome:
Code: Select all
$bid = mysql_real_escape_string($_GET['bid']);$bhid = mysql_real_escape_string($_GET['bhid']);
Kol kas tiek, jeigu kažką domins papildysiu plačiau. ( Būtų naudinga stickint postą)