Saugi PHP-Fusion sistema
Parašė SofteriZ 2012 sausio 15 14:01:53
[img align=center]http://themes.webdnd.com/images/php-fusion-logo.png[/img]

Sveiki, taigi šiandien jus apšviesiu [b][color=orange]PHP-Fusion[/color][/b] saugumo skiltyje, nuo informacijos pradinukam, iki sunkesnių kodų.

[b]1.[/b] Negalima naudoti vienodų slaptažodžių, ar tų kuriuos naudojate kituose tinklapiuose. Geriausia būtų (kaip darau ir pats) suspaudyt bet kokias raides naršyklės lange ir užsirašyti į knygutę ar [b].txt[/b] failiuką.

[b]2.[/b] Patartina pasikeisti [b]config.php[/b] failo, bei administration katalogo pavadinimus. Kaip tai padaryti? Einame į [b]maincore.php[/b] failą, susirandame 36-43 eilutes, ten kur matote [b]config.php[/b] failo pavadinimą, keičiam jį į savo norimą. Vėliau įeiname į FTP susirandame [b]config.php[/b] failą, bei pakeičiame jo pavadinimą į tokį, kokį nurodėte [b]maincore.php[/b] faile.

[i]Pastaba: [b]maincore.php[/b] failo pavadinimo keisti tiesiog neapsimoka! Jį galima išgauti įvedus tam tikrą kodą.[/i]

[b]3.[/b] Kintamųjų keitimas. Atsidarome [b]Notepad++[/b] spaudžiam [b]CTRL+F[/b] ir ieškome šių kintamųjų “[b]$db_host[/b]”, “[b]$db_name[/b]”, “[b]$db_user[/b]”, “[b]$db_prefix[/b]”, juos keičiame į bet kokius jūsų pasirinktus. Kai pakeičiame, įeiname į [b]config.php[/b] failą ir ten pakeičiame juos, į tokius, kuriuos nurodėte maincorė‘j.

[b]4.[/b] Apsauga nuo [b]SQL[/b] atakų, tikrai naudingas dalykas, mažiausiai [color=red][b]60%[/b][/color] apsaugantis nuo [b]SQL[/b] atakų, o, kad pernelyg daug nevargti, duosiu kodą kurį reiks įterpti į maincore prieš [color=orange][b]?>[/b][/color].

[b]PHP Kodas:[/b]

[geshi=php]If (preg_match("/^(.*)((.*)union(.*)|(.*)select(.*)from(.*)|(.*)drop(.*)|(.*)truncate(.*)|(.*)delete(.*)from(.*))+$/i",FUSION_QUERY)) {

$msg_subject = "".USER_IP." : Bandymas įsilaužti";

$message = "Lankytojas ".USER_IP." naudojantis tikslų IP adresą: (".gethostbyaddr(USER_IP).") bandė įvykdyti portalo veiklai kenksmingą užklausą tokiu metu: ".showdate("%Y-%m-%d %H:%M:%S",time()).".\n\n. Užklausa: ".htmlspecialchars(FUSION_QUERY);

$die_msg = "<center><big><big><b>TU PRIGAUTAS!</b></big></big><br>\n<font color='#ff0000'>Administracija ką tik gavo žinutę su jūsų IP adresu, bei kita informacija. Jūs esate blokuojamas portale visam laikui, be šansų sugrįžti.</font></center>";
$result = dbquery("INSERT INTO ".$db_prefix."blacklist (blacklist_ip, blacklist_reason) VALUES ('".USER_IP."', 'Mėginimas įsibrauti į sistemą.')");
$result = dbquery("INSERT INTO ".DB_PREFIX."messages (message_to, message_from, message_subject, message_message, message_smileys, message_read, message_datestamp, message_folder) VALUES ('1', '1', '$msg_subject', '$message', 'y', '0', '".time()."', '0');");
die($die_msg);

}
[/geshi]
[b]5.[/b] Pridėtinių puslapių apsauga, neleidžianti išgauti [b]config.php[/b] failo duomenų. Apsaugos jūsų tinklapį nuo [color=red][b]10%[/b][/color] įsilaužėlių.
Atsidarom [color=olive][b][i]/administration/custom_pages.php[/i][/b][/color]

Susirandam

[b]if (isset($_POST['save'])) {[/b]

po

[b]$page_content = addslash($_POST['page_content']);[/b]

įterpiame:

[b]if (preg_match("/config.php|$db_host|$db_pass|$db_name|$db_prefix|base64_decode| file_get_contents/", $page_content)) { header('Location: '.$settings['siteurl'].''); }[/b]

po to, susirandame

[b]if (isset($_POST['preview'])) {[/b]

po

[b]$page_content = stripslash($_POST['page_content']);[/b]

įterpiame:

[b]if (preg_match("/config.php|$db_host|$db_pass|$db_name|$db_prefix/", $page_content)) { header('Location: '.$settings['siteurl'].''); }[/b]

[i]Su pridėtiniais puslapiais baigta![/i]

[b]6.[/b] Panelių kenksmingo kodo apsauga. Apsaugos dar nuo [color=red][b]10%[/b][/color] įsilaužimų.

Susirandam:

[b]$panel_content = isset($_POST['panel_content']) ? stripslash($_POST['panel_content']) : "";[/b]

Po juo rašome:

[b] if (preg_match("/config.php|$db_host|$db_pass|$db_name|$db_prefix/", $panel_content))
{
header('Location: '.$settings['siteurl'].'');
}
[/b]

Štai toks nedidelis straipsniukas, padės tieks naujokams, tiek labiau patyrusiems.