bganonymous
Registered
Здравейте! Как според вас мога да направя config.php (файла за връзка с БД) по-защитен?
Follow along with the video below to see how to install our site as a web app on your home screen.
Бележка: This feature may not be available in some browsers.
Слагаш го в директория след което правиш един файл .htaccess и в него пишеш Deny from all като така забраняваш достъпа на абонатите към папката.bganonymous каза:Здравейте! Как според вас мога да направя config.php (файла за връзка с БД) по-защитен?
<?php
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip!="Твоя ип адрес")
{
header("Location: http://site.com");
exit;
}
$db_user = "dbuser"; // Потребителско име
$db_pass = "dbspass"; // Парола
$db_database = "db"; // Датабаза име
$db_host = "host"; // Сървър , обикновено е localhost
$db_connect = mysql_connect ($db_host, $db_user, $db_pass); // Връзка.
$db_select = mysql_select_db ($db_database); // Избира датабазата.
function form($data) { // Защита
global $db_connect;
$data = ereg_replace("[\'\")(;|`,<>]", "", $data);
$data = mysql_real_escape_string(trim($data), $db_connect);
return stripslashes($data);
}
?>
systems каза:Ето още дин вариянт от мен:
По този начин само от твоя ип ще има достъп до този фаил.PHP:<?php $ip = $_SERVER['REMOTE_ADDR']; if ($ip!="Твоя ип адрес") { header("Location: http://site.com"); exit; } $db_user = "dbuser"; // Потребителско име $db_pass = "dbspass"; // Парола $db_database = "db"; // Датабаза име $db_host = "host"; // Сървър , обикновено е localhost $db_connect = mysql_connect ($db_host, $db_user, $db_pass); // Връзка. $db_select = mysql_select_db ($db_database); // Избира датабазата. function form($data) { // Защита global $db_connect; $data = ereg_replace("[\'")(;|`,<>]", "", $data); $data = mysql_real_escape_string(trim($data), $db_connect); return stripslashes($data); } ?>
<?php
error_reporting(0);
// останалата част от кода
?>
<?php
define('THIS_IS_A_SECRET_CONSTANT', 'qw9e87456das')
include "config.php";
<?php
if(!defined('THIS_IS_A_SECRET_CONSTANT') || !(THIS_IS_A_SECRET_CONSTANT == 'qw9e87456das')
{
//грешка!
exit;
}
Това обаче не е достатъчно - въпросния файл може да бъде отворен чрез друг скрипт, пуснта на същия сървър...
Принципно мога да Ви кажа, че номера с .htaccsess си върши перфектна работа. Слагаш го в папка в която системата няма да има достъп и го инклудваш. По-скоро трябва да се защити от SQLi и XSS заедно с другите по вид атаки и това е. Той ако някой стигне до това да барника из сайта и да г счупи дали ще има глупавите настройки на конфигурационният файл е направо глупаво. Ти си правиш някакви проверки и това е. Какво ще ти напълни базата или ще ти открадне домейна ли. Ами това няма да е защото конфигурационният ти файл е криптиран или не, а защото основно си направил някъде голяма грешка в кода. Не защитена входно изходна променлива и така нататък. Използвайте неща които не са чак така проблемни и усложняващи. Да горните мнения са много правилни и страхотни като предложения, но за мен това е едно добро и сигурно решение. Кръщаваш папката и файла с някакво странно име и си готов. Ако успее да открие тази папка като стринг той няма да има достъп до нея. От код да може да извика файла но това означава, че имаш пропуск другаде.lamerko каза:И като напаря едно ехо на файла като стринг без да го прекарвам през врапъра - какво правим?
Иначе за декриптирането - няма ясно изразено забавяне.
Не е ли така? Мнението и обяснението което даде ти е изключително правилно като расъждение и естествено добра практика ако проекта го налага. За средностатистически сайт според мен не е наложително. Да конфига трябва да е отделно от системата и прочие но е достатъчно достъпа до папката да се забрани. Външно не виждам как ще достъпиш до файла ако .htaccess-a не ти позволява. Принципно ако греша обяснете ми, все пак от наблюденията ми това е било достатъчно. :?:lamerko каза:Щом казваш![]()
Заявка? Добре, дай пример. Имам система както следва като директория:lamerko каза:Нямаш си на идея какви трикове има. Но за твоя банален случай - нека да кажем, че има елементарен начин да заобиколим .htaccess. С една най-обикновенна заявка. Естествено има защита, но въпроса е дали е приложена. А в 80% от случаите - не е.
Казвам ти го като човек, работещ 11 години в агенция по сигурност, а преди това - около 5 години съм... се забавлявал от другата страна... та никога не се осланяй твърде много на половинчати решения. Пропуските в сигурността отдавна вече не са банални, но постоянно изникват от най-неочакваните места![]()
<?php
$array['url_defense'] = true;
$array['content_pattern'] = '/^[а-яa-z0-9~%.:#_\-+=&?\/]+$/iu';
return $array;
Ммм странно. Не намирам из нета нещо с този параметър GETS на търсене. Това S за множествено число ли го слагаш или просто това е названието? Дай линк с обяснение на този вид "атака". Обясни ми, явно съм невежа по темата и ми казваш нещо което е доста интересно от към секюрити сектора. Впрочем да добавя, че през линк бара на сайта се прави проверка за нежелани символи: '/^[а-яa-z0-9~%.:#_\-+=&?\/]+$/iu' това е патърна и ми стана мега интересно като намеси и GET. С този патърн филтрирам ненужните за мен символи.lamerko каза:Най-лесното - ще пусна GETS заявка вместо GET![]()
Доообрее! Дай да видим някой друг линк по темата.lamerko каза:Ами точно защото няма много информация относно някои неща е проблема. За GETS - правиш си нормална заявка, като подмвняш GET с GETS:
GETS / HTTP/1.0