Jump to content
php.lv forumi

MYSQL drošība


DMG

Recommended Posts

Labdien! Tātad es tagad mēģinu uztaisīt tā lai manā mājas lappā vis darbotos ar mysql palīdzību, tapēc gribētu pajautāt var būt kāds kas ar to jau ir nodarbojies varēt pastāstīt par kādām izplatītākajām kļūdām un virpār par mysql drošību, lai nevarētu kāds vienkārši uzlaust manu datu bāzi.

Pagaidām cik meklēju atradu tikai par funkcijas mysql_real_escape_string() nozīmīgumu, bet gan jau ir vel kkas par ko varēt man pastāstīt nedaudz :)

Link to comment
Share on other sites

Filtrēt tas būtu ar mysql_real_escape_string vai kā tu to domāj ? :^)

Un pag paskaidro lūdzu to datu validēšanu - ko tas īsti nozīmē ?

 

Un vel kāds jautājums - tā mysql_real_escape_string vai tad nav tas pats kas htmlspecialchars() ?

Link to comment
Share on other sites

Datu validēšana nozīmē to, ka pārbaudi vai dati, ko praktiski un tīri teorētiski var padot lietotājs - ir ar tādu saturu, kādu esi vēlējies saņemt Tu!

Piemēram vai lauks, kurā jāievada daudzums - satur tikai ciparus. Vai emails ir korekts vai login lauks un passworda laukos kāds nav paslēpis kādu injekciju. Ja lieto kūkijus, pārbaudi vai to saturs atbilst tevis rakstītajam - padot jau var sazin ko. e.t.c. Ko pārbaudīt ir vienmēr. Kaut ko aizmirstot vari savu projektu padarīt potenciāli ievainojamu. Var jau gadīties, ka kaut ko nepārbaudot, to nemaz nevar izmantot uzbrukumam, bet var arī gadīties ka var.

Link to comment
Share on other sites

Filtrēt un validēt nozīmē pārbaudīt vai ienākošie dati atbilst vajadzīgajam formātam. Ja, piemēram, tu veido skriptu, kas dzēšs ierakstu pēc ID, kas vienmēr būs cipars, tad noteikti pārbaudi vai padotā vērtība būs cipars. Es to darītu kaut kā šādi:

 

if(!is_numeric($_POST['id'])) {
die();
}

$id = (int) $_POST['id'];

// Kverijs

 

Palasi manuālī, ko dara htmlspecialchars un ko mysql_real_escape_string.

Link to comment
Share on other sites

Es te apskatot google atradu vel tādu funkciju kā sqlesc() tieši prekš MYSQL it kā tikai lieta tāda ka nekur nevaru atrast aprakstu par viņu - var `but kāds zina kur var palasīt kko sīkāk vai arī pats pateikt ko īsti viņa dara ?

Link to comment
Share on other sites

Es jau neteicu ka viņam kādas vainas :) Tikai cik saportu šī ar kkādi pasargā no hakeru uzbrukumiem - tikai nevar atrast sīkāku aprakstu un pielietojumu pareizu

Link to comment
Share on other sites

šitais palīdzēs pret caur URL nodotajām sql injekcijām (varbūt nevisām)

 

 

 

if (get_magic_quotes_gpc())
$_SERVER['QUERY_STRING'] = stripslashes($_SERVER['QUERY_STRING']);
$query = urldecode($_SERVER['QUERY_STRING']);

$rules = array();
$rules[] = "|drop[[:space:]]+database|table|column|i";
$rules[] = "|delete[[:space:]]+from|i";
$rules[] = "|insert[[:space:]]+into|i";
$rules[] = "|update.+set.+=|i";
$rules[] = "|union.+select|i";
$rules[] = "|alter[[:space:]]+table|i";
$rules[] = "|into[[:space:]]+outfile|i";
$rules[] = "|load[[:space:]]+data|i";
$rules[] = "|select.+from|i";
$rules[] = "|left|inner|outer|cross|natural[[:space:]]+join|i";
$rules[] = "|straight_join|i";

foreach($rules as $rule) {
 if(preg_match($rule, $query)) die();
}

 

Zagts no hackers.lv

Edited by 4e4en
Link to comment
Share on other sites

Kāda jēga neatļaut kautkādus sql keywordus postēt? Es varbūt komentārā gribu kautko gudru par sql pateikt, a tur die()... Vienkāršāk taču ir noeskeipot pēdiņas, vai lietot mysqli_stmt_bind_param veida fjas.

Link to comment
Share on other sites

4e4en, šādas metodes reklamēt nevajag. Iekš hackers.lv šis bija nopublicēts tikai kā ieteikums kā varētu mēģināt uzlabot tādu aplikāciju drošību, kas ir pārāk komplicētas (pārāk lielas), lai tām ietu cauri un pārbaudītu vai visur ir noeeskeipoti dati.

Link to comment
Share on other sites

×
×
  • Create New...