Перейти к содержимому

Skif.

Skif.

Регистрация: 21.04.2012, 11:22
Offline Активность: 30.08.2014, 22:28
-----

В теме: Ест ли Казхстанские CMS?

30.08.2014, 11:37:17

Всем привет

Немного доработал CMS-ку, кому интересно вот ссылка http://sourceforge.net/projects/asti/

 

Инструкция по установке и небошльшое руководство на сайте http://asti.astana-it.kz

 

CMS пока еще сырая, но код не сложный, поэтому можете под себя доработать.


В теме: Ест ли Казхстанские CMS?

15.04.2014, 23:14:12

Обновил код

 

Админку можете посмотреть на сайте http://asti.astana-it.kz/admin/

Логин admin

Пароль 123456

 

(Отключил возможность редактирования и удаления материалов. Но создавать можно, они все равно отображаться не будут.)

 

Ссылка на CMS https://sourceforge.net/projects/asti/


В теме: Ест ли Казхстанские CMS?

15.04.2014, 16:24:39

Эти библиотеки выполняют разный класс задач - mysql_real_escape_string() предназначена для терминирования строк, которые уйдут в mysql сервер, причем с учетом настроек текущего соединения. preg_*() - набор функций, для работы с перл совместимыми регулярками. Само собой, тот же preg_replace() вполне может заменить в каком-то конкретном случае mysql_real_escape_string(), но во первых именно в каком-то конкретном, а во вторых с большими ресурсозатратами.

 

Спасибо за подробный ответ, буду использовать обе функции, чтобы максимально обезопаситься)


В теме: Ест ли Казхстанские CMS?

14.04.2014, 18:14:59

У Вас есть 100% уверенность, что в preg_*() нет ошибок, из-за которых можно собрать строку, прошедшую проверку, но которая будет интерпретирована в ';?

 

Насколько я понял, он только символы и цифры мне оставит, он ведь для этого и предназначен. Или у вас есть информация что можно обойти ее с помощью определенной последовательности символов? Я не знаю, не встречался, просто для примера несколько скриптов проссматривал (довольно распространенных), и там эту функцию использовали, вот и перенял опыт)

 

В этом отношении можно полагаться только на mysql_real_escape_string(), т-к это ее единственная задача.

 

Читал что функцию mysql_real_escape_string() не рекомендуют использовать как защиту от sql-инъекций, лучше что-нибудь другое придумать. Вот и начал использовать preg_*

 

asti->q_articles(): зачем проверять количество article_text отдельным запросом? Тем более по структуре базы его может или быть или нет. Можно просто SELECT `article_text` FROM `articles` WHERE `article_id`='$ID' а потом от него mysql_num_rows() проверить. admin->content(): Структура кода будет красивее, если сделать

 

Спасибо

Примерно так в админке реализовано. Но с шаблонами немного сложнее, т.к. они будут часто меняться, поэтому еще не придумал как это реализовать.

 

admin/models/*: Везде sql иньекции. Все строковые данные перед использованием в запросах надо терминировать через mysql_real_escape_string()

 

Там тоже с помощью preg_*() защищался)

 

Вы считаете лучше использовать mysql_real_escape_string()? или например даже их обоих?


В теме: Ест ли Казхстанские CMS?

14.04.2014, 17:16:01

Бегло глянул - совсем грустно :( admin/models/login.php - строки 17 и 20 - SQL инъекция по остальным файлам тоже хватает дыр, нигде не экранируются параметры $_POST, а "как есть" передаются в mysql

 

Извините, так ведь пользователь и не сможет ввести никакой лишний символ, только латиницу от a до z и цифры, вот

if(!empty($_POST['login']) && !empty($_POST['password']) && preg_match('/^[a-z\d]{4,20}$/i', $_POST['login']))
    {
    $user_login = $_POST['login'];
    $user_pass = $_POST['password'];
    $find_user = mysql_query("SELECT COUNT(user_id) FROM `users` WHERE `user_login` = '$user_login';");                                                                            // 17 строка
    if(mysql_result($find_user, 0) > 0)
        {
        $select = mysql_fetch_assoc(mysql_query("SELECT `user_password`, `user_login`, `user_role` FROM `users` WHERE `user_login` = '$user_login';"));    //20 строка

 

 

А если ее можно обойти, то напишите пожалуйста как это сделать?

 

 

 

install/index.php - строки 34-47 "PHP инъекция", можно записать любой пхп код на сайт, а затем выполнить его.

 

А здесь и не пытался защитить админа от самого себя))  Каталог install уадлить нужно будет после установки, там предварительная настройка подключения к БД и скрипт создания таблицы. После выполнения скрипта, предлагается удалить каталог install

 

Бегло глянул - совсем грустно :(

 

Напишите пожалуйста другие "sql-инъекции".

Спасибо что посмотрели код


Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.