![]() |
Cosmiqum
Помнится, пару лет назад, когда я только начинал изучать PHP я упомянал, что делаю свою CMS, которую успешно взломал тов. halkfild (Спасибо, иначе я не узнал бы о том, что такое SQL-Inj. :) ). Ну что ж, прошло кое-какое время, я многому научился. И теперь я разработал новую CMS, которая даже больше похожа на фреймворк. Имя её Cosmiqum. Прошу посмотреть на неё и сказать, не пропустил ли я чего.
Вчера я выложил первую публичную версию ядра системы, в течении нескольких дней выложу базовые плагины для системы. Тем не менее, прошу пока потестить ядро. Когда выложу плагины, я отпишу здесь. http://code.google.com/p/cosmiqum/ P.S. Также, буду рад комментариям по поводу оформления кода. UPD. Добавил плагины для работы с шаблонами и для работы с БД. просьба проверить и их. Также немного изменил ядро. |
Из недочетов:
В функции LoadLang (как в файле engine/includes/functions.php, так и в engine/includes/plugins.class.php) не помешало бы добавить не большую фильтрацию - вырезать / и .., после чего обрезать по длинне - ограничить до 255 символов. Больше ничего, покрайней мере я, не нашел. |
Спасибо, поправлю. Когда выложу плагины, там наверняка будет побольше уязвимостей, особенно плагин для работы с БД.
UPD: Добавил 2 плагина. Первый пост обновлен. |
Файл core.php, хоть к выводу путей это не приводит т.к. ошибки пишутся в твой класс, но все же можно избавиться от этих ошибок.
к примеру: http://cms.lo/index.php?a[]=1 // твоя фильтрация xss и аналогичные обработки $_POST, $_COOKIE Код:
foreach ($_GET as $key => $value) {Код:
Array ( [0] => 1 )Код:
htmlspecialchars() expects parameter 1 to be string, array given |
Ага, спасибо, поправил + добавил еще 2 плагина
|
Файл registration.php. Функ HandlePage.
Код:
$oPluginDb->Query("UPDATE ".$oPluginDb->sPrefix."users SET "."`code`='', `active`=1 WHERE `id`=$id");Код:
$oPluginDb->Quote($_param)Код:
WHERE `id`=$idКод:
magic_quotes_gpc=Off;P.S. поправьте если ошибаюсь. |
Цитата:
Кстати. magic_quotes никакой роли не играет, т.к. если он включен, то экранированые кавычки превращаются в обычные и если не фильтровать переменную при запросе в БД то запрос уязвим. |
Та же история в файле restorepw.php
Функ HandlePage. Для параметра $iId забыл $oPluginDb->Quote() Код:
И еще очепятка =) выделена жирным Код:
|
Цитата:
...isset($_REQUEST['id']) && $_REQEST['id']>0 &&... т.е. id должен быть числом больше нуля, а значит туда нельзя подставить ничего лишнего нельзя. Цитата:
|
Все несколько иначе.
Код:
$_REQUEST['id']>0Код:
<?phpКод:
// после этого ты точно будешь знать, что у тебя там числоКод:
if (!empty($iId)) |
| Время: 11:24 |