Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Безопасность в PHP, Статья 
:(
    Опции темы
S.A.P.
Дата 19.4.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Мое ИМХО по include багам:
в include, require и т.д. использовать только константные строки! и include баг исчезает как класс.
Некоторые могут возразить: "а как - же ты тогда подрубаешь скрипты?". Отвечаю: вся структура с URL ами и соответствующими им модулями хранится в базе данных или других носителях. И уже давно пора на ЧПУ переходить. mod_rewrite даже на бесплатных хостах начинают ставить.
Конечно - же исключением может являться функция __autoload, где как раз и должны использоваться переменные в include, но ИМХО однажды хорошо продуманный и реализованный __autoload должен решить пробему с этим
Код

include (!empty ($_GET['page']) && substr_count ($_GET['page'], '/') == 0 && substr_count ($_GET['page'], '\\') == 0 && file_exists ("pages/".$_GET['page'].".php") ? $_GET['page'] : "home").".php";

smile 


Мое ИМХО по SQL и mysql_real_escape_string()
Чтобы избавиться от подобных безобразий почитайте про placeholders у Д.Котерова.
http://www.dklab.ru/lib/Database_Placeholder/
  

Это сообщение отредактировал(а) S.A.P. - 19.4.2006, 21:04
PM MAIL   Вверх
CyClon
Дата 3.5.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Я у себя использую данный способ проверки:

Код
if (!empty($_GET['go']) && preg_match("#^[a-z0-9_]{2,20}$#", $_GET['go']) && file_exists("modules/".$_GET['go']."/index.php")) {
    $module = $_GET['go'];
}


И все ваши include-баги отдыхают - можно вписывать только строчные буквы латинского алфавита с цифры + если ихсодники никому не показывать своего сайта - то у взломщика меньше 1% шанса, что он ломанет сайт через эту дырку. 


--------------------
user posted image
PM   Вверх
Aliance
Дата 16.5.2006, 22:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Цитата(Mal Hack @  8.1.2006,  20:53 Найти цитируемый пост)
А я бы вот использовал проверку, а не приведение типов. ctype_*();

если в переменной должно содержаться только число - то ctype_digit() подойдет?
Не точки, не запятой, не символов, только число. 
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 16.5.2006, 23:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Да. 
PM ICQ   Вверх
Wolf1994
Дата 22.6.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: нет
Всего: 29



Цитата

Для того, чтобы юзеры не могли набирая http://site.ru/data/passwd.dat увидеть ваши пароли, либо MD5 хеши (их можно легко подобрать, например через MD5 Inside), то создайте папку date в корневом коталоге Вашего сайта (то бишь где валяются папки site(или www), cgi-bin и прочие) и выложите все свои файлы, где храниться записываемая информация в нее.
Если хотите инклудировать фалйы, то пишите include("../date/file.dat");. Дальше вы разберетесь. 


Добавлю свой метод защиты. При использовании читабельных файлов с данными, можно переписать обращение к этим файлам (например по расширению ".txt"), через мод-реврайт, на 404-страницу. 
PM MAIL WWW   Вверх
AntiLL
Дата 25.10.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 4.2.2006

Репутация: нет
Всего: нет



Я больше доверяю защите через .htaccess. Ко всем файлам которые инклюдяться однозначно 
Код

deny from all

 Также если некоторые файлы только для приватного использования то однозначно в .htaccess:
Код

AuthUserFile D:/hst/config/.htpasswd
AuthName "Not For You"
AuthType Basic
<Files *.*>
require user 
</Files>


Что касается средств безопасности пхп, то однозначно не доверять ничему и никому - GET, POST, cookie, формы и т.д.

Очень часто встречается вид инъекции через GET, причем в самых разных приложениях, даже в тех за которые просятся крупные суммы денег. Я решаю эту проблему очень просто - просто напросто запрещаю все недопустмые символы в УРЛ - кавычки, скобки, "../" , как в прямом виде так и в Unicod. Приведу код, хотя он и не отличается оптимальностью, по идее бы это все надо делать регулярными выражениями но мне чета впадлу ща). Кстати на скорости работы всей системы в целом не влияет, но зато отпадает сразу уйма ненужной головной боли.
Код

function check_url()
   {
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$new_url=strip_tags(unhtmlentities($url));
$new_url=addslashes($new_url);
$new_url=str_replace("../", "", $new_url);
$new_url=str_replace("..%2F", "", $new_url);
$new_url=str_replace("..%2f", "", $new_url);
$new_url=str_replace("%27", "", $new_url);
$new_url=str_replace("(", "", $new_url);
$new_url=str_replace(")", "", $new_url);
$new_url=str_replace("%20", "", $new_url);
$new_url=str_replace("eval", "", $new_url);




if ($new_url != $url)  {    
                 exit; 
                          }
          return TRUE;
   }


PM MAIL   Вверх
Aliance
Дата 7.11.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Является ли функция addslashes() приемлиемой для экранирования SQL запросов?
PM MAIL WWW ICQ Skype   Вверх
CyClon
Дата 7.11.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Мои предпочтения по убывающей smile

mysql_real_escape_string
mysql_escape_string
addslashes


--------------------
user posted image
PM   Вверх
Aliance
Дата 7.11.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Нет, это понятно, я всегда пользуюсь mysql_real_escape_string, просто в данном вопросе мне нужно использовать функцию без подключения к БД, так как вставка происходит через API, написанные не мной и я не знаю есть ли там экранирование (хотя скорее всего есть)
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 7.11.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Я бы использовал PDO->prepare в PHP5.
PM ICQ   Вверх
AntonioBanderaz
Дата 1.12.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 18



Цитата(Alx @  8.1.2006,  16:37 Найти цитируемый пост)
<?
$act = $_GET['act'];
require "/sources/{$act}.php";
?>

и твой сайт зациклен
http://alx.com.ru/index.php?act=../index




--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Alx
Дата 1.12.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



AntonioBanderaz
ок, спасибо) залатаю)


--------------------
PM MAIL WWW ICQ   Вверх
R.M.
Дата 5.1.2007, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: нет
Всего: 30



Мне кажется в статье не хватает очень важной инфы.... о куках smile скажем о том что в куки низя писать, нельзя проверять только по логину из кук, и т.д.

Это сообщение отредактировал(а) R.M. - 7.1.2007, 18:49


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 5.1.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(R.M. @  5.1.2007,  03:27 Найти цитируемый пост)
Ещё можно от инклуд-бага спастись фишкой

И как она защитит?

Цитата(R.M. @  5.1.2007,  03:27 Найти цитируемый пост)
А вообще мне кажется в статье не хватает очень важной инфы.... о куках smile скажем о том что в куки низя писать, нельзя проверять только по логину из кук, и т.д.

http://phpclub.ru/detail/article/sessions
PM ICQ   Вверх
R.M.
Дата 7.1.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: нет
Всего: 30



Цитата(Mal Hack @  5.1.2007,  17:00 Найти цитируемый пост)
И как она защитит?

Да, что-то я немного не о том smile

Цитата(Mal Hack @  5.1.2007,  17:00 Найти цитируемый пост)
http://phpclub.ru/detail/article/sessions 

Что ты хотел этим сказать? smile

Это сообщение отредактировал(а) R.M. - 7.1.2007, 18:48


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




[ Время генерации скрипта: 0.1703 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.