-
Публикации
1 592 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
12
Сообщения, опубликованные пользователем IT-Security
-
-
Насчёт голосования - не вижу смысла.
Заезженная не раз тема.
Поэтому я предпочёл писать свой движок нежели писать API под каждую версию DLE.
-
offtopic: Да...Насчёт ссылок верно =) У меня вот используется $core->rewrite('полная ссылка');
На выходе получается переписанная =)
-
Ну если делать тупо реколор стандартного скина, то это конечно нетрудно)
А если делать правильно (Тоесть сначала рисовать дизайн в PSD, а потом его резать), то это уже труднее =)
-
Тут скорее не дизайнер, а верстальщик нужен.
90% описанного тут это вёрстка с применением JS и фреймворков. Такими знаниями далеко не каждый дизайнер владеет.
У меня в студии впринципе есть и дизайнер и верстальщик.
Примеры работ:
http://www.newleaf.ru/ (Доделываем свой движок обновим контент)
- http://skat-group.org/index.php?site=1
- http://skat-group.org/index.php?site=2
- http://skat-group.org/index.php?site=3
Есть интересно, то можно пообщаться.
-
Возможные варианты также перечислите.
Тоесть какие бывают типы кузовов и т.п.
-
Можете заказать модуль, если хотите.
-
Спасибо за положительный отзыв =) *покраснел*
-
Tock me to ICQ 683993.
I have no time today to answer you in PM.
Sorry
-
Если без капчи и прочего - то что трудного?
if (isset($_POST)) { // Отправка формы } else { // Выводим поля }
Вкратце в очень упрощённом варианте так.
-
Может наконец-то какое-то API сделают, что интеграция не превращалась в такой гемморой.
В своей CMS давно уже сделал. Пример:
$api = new API_System(); $api->take_user_by_username('IT-Security'); $api->take_user_by_id(1); $api->take_user_by_email('Asafchik@inbox.ru'); $api->external_register('IT-Security', 'password', 'email', group); $api->change_group(1, new_group); $api->take_users_by_ip('77.77.1', TRUE); $api->take_users_by_ip('77.77.1.11');
-
А владелец у папок какой?
ls -la покажет группу и владельца.
-
Ну тогда пишите так:
"Я такой-то такой-то или какого-нибудь идиота-программиста или школьника или бригаду таджиков, которая знает PHP, чтобы они мне за 10 000 рублей написали супер-мега интернет магазин!
Подпись. Дата"
Ниодин нормальный программист не будет гробить своё время на НОРМАЛЬНЫЙ продукт за 10 000 рублей и ТЕМ БОЛЕЕ интегрировать его в DLE, который почему-то люди считают панацеей, хотя если разобраться, то в движке нету НИ-ФИ-ГА для создания полноценного бизнес-сайта. Это НОВОСТНОЙ движок и ВСЕГДА им останется.
И никакие уверения типа "Имея прямые руки можно строить любые сайты" никогда не станут реальностью. PR и не более.
-
10000 рублей?За интернет магазин?Вы смеётесь чтоли?
От 30 000 ещё можно о простеньком магазине говорить в несжатые сроки.
-
Фишка в том, что большинство инъекций можно применить только будучи админом галереи. Но это не оправдание, чтобы оставлять дырку.
Ибо любой, кто стырит куки админа поимеет весь сайт.
Да и о типах данных автор тоже не имеет понятия.
В PHP типы конечно прозрачны, но делать так:
$show_albom=='0' - маразм.
Это INT преобразовывается в STRING и сравнивается...
-
Сча поглядим фото-альбомы...
Начнём с того, что с выключенными short_open_tag работать не будет...
Едем дальше...
photo.php
$v = "0.04 бета"; function lay($t){ global $v;
Интересная идея глобалить никому нафиг ненужную переменную. Если так нужна - передайте параметром чтоли.if(!isset($_POST['InTextAddAlUrl']))$_POST['InTextAddAlUrl']='0';
Ну что такое...Неужели трудно красиво писать?Красивее и функциональнее.$somevar = isset($_POST['InTextAddAlUrl']) ? $_POST['InTextAddAlUrl'] : 0;
Далее:if($show_albom or $show_albom=='0'){$count_post = "SELECT COUNT(*) as count FROM " . PREFIX . "_photo_post where albom = '$show_albom' {$sort_row}"; }else{$count_post = "SELECT COUNT(*) as count FROM " . PREFIX . "_photo_post {$sort_row}";} $row_post = $db->super_query($count_post);
С точки зрения быстродействия ни в коем случае нельзя делать Count(*)! Count нужно делать по проиндексированному полю. Крайне желательно по Primary Key Далее: Видел пару раз count() несколько раз. Лучше получить в переменную 1 раз и проверять переменную. Ибо:if($en>count($ar)){ $en=count($ar);} if($i==0){ while(($i+$en)<4){$en++;} $fifi=$i;} $startofit = $i; $endofit = $en; if($en==count($ar) or $en==count($ar)-1){ if($en!=count($ar)-1){
5 раз вызывается функция. Когда можно вызвать один раз.for($x = 1;$x<count($listik);$x++)
Опять же вопрос производительности. count() будет вызываться при каждой итерации цикла. show.php вообще суперIF ($_REQUEST['small']){ $id = $_REQUEST['small']; $dir = "./uploads/photos/"; $file =$dir.$id;
basename() юзайте, товарищи!$HTTP_SESSION_VARS - старо и не является супер-глобальный массивом...Нужно использовать $_SESSION. $sort = "where albom = '{$HTTP_SESSION_VARS['aid'] SQL Inject. Заголовки сессии можно запросто подделывать.
Кстати об ajax:$new = stripslashes($new);
Зачем сбрасывать добавляемые для безопасности слэши??? SQL-Inject по идее.$idy = $_POST['idy']; $zoo = "SELECT * FROM `" . PREFIX . "_photo_post` where id = {$idy}";
SQL Inject$idal = $_POST['delit']; $zapros = "DELETE FROM " . PREFIX . "_photo_alboms WHERE id = '{$idal}'";
SQL Inject 'delete from dle_photo_alboms where 1=1'$take = "SELECT * FROM `" . PREFIX . "_photo_post` where albom = {$idal}"; $zoo = "DELETE FROM `" . PREFIX . "_photo_post` where albom = {$idal}";
SQL Inject$id = $_POST['edit']; $zapros = "SELECT * FROM " . PREFIX . "_photo_alboms WHERE id = '{$id}'";
SQL Inject$id = convert_unicode_photo($_POST['edit']); $sname = trim(convert_unicode_photo($_POST['sname'])); $sdes = trim(convert_unicode_photo($_POST['sdes'])); $sphotos = trim($_POST['sphotos']); ... ... $up = "UPDATE `" . PREFIX . "_photo_alboms` SET name='{$sname}',des='{$sdes}',photos ='{$sphotos}' WHERE id = '{$id}'"; $zapros = "SELECT * FROM " . PREFIX . "_photo_alboms WHERE id = '{$id}'";
SQL Inject$id = $_POST['idy']; $take = "SELECT * FROM `" . PREFIX . "_photo_post` where id = {$id}";
SQL Inject$p = convert_unicode_photo($_POST['p'])-1; $pid = convert_unicode_photo($_POST['pid']); ... ... $comms = "SELECT * FROM " . PREFIX . "_photo_comm where pid = '{$pid}' ORDER BY `date` DESC LIMIT $start , $finish"; ... $test = "SELECT COUNT(*) as count FROM " . PREFIX . "_photo_comm where pid = '{$pid}'";
SQL Inject
Не модуль, а решето. Заходите кто хотите, берите что хотите.... И то, что проверяются привелегии не должно быть отмазкой. Дырка есть?Есть!
-
Я думаю я без Вас как-нибудь разберусь. Смысл поста в том, что если любишь ставить сторонние бесплатные (И не очень) модули, то будь готов к тому, что сайт поимеют.
Если люди не в состоянии сами себя защитить или правильно писать модули - то пусть обращаются.
Как видите бесплатно я дырки тоже под настроение нахожу. Хотел бы сделать гадость - поимел бы сотню-другую сайтов, где этот модуль стоит.
-
Собственно говоря готов предоставить на коммерческой основе полный аудит по безопасности установленных модулей для желающих.
-
Внимание всем пользователям модуля VIP-Serials!
Присутствует уязвимость высокого уровня опасности!
Класс: SQL-Injection
Удалённый пользователь может совершать запросы к базе данных
Уязвимый файл:
engine/modules/vip.php
Исправление:
Найти: $serial = stripslashes($serial); Заменить на: $serial = $db->safesql($serial);
Версия в которой нашёл - 2.6
Подозреваю, что автор не имеет никакого понятия о безопасности веб-приложений и уязвимы все версии.
Уязвимы все сайты, на которых стоит этот модуль.
-
Тормозит хостинг.
А ещё очень интересные заголовки он посылает:
Set-Cookie: dle_user_id=deleted; expires=Sat, 19-Jan-2008 16:04:08 GMT; path=/; domain=.oformi.net; httponly Set-Cookie: dle_password=deleted; expires=Sat, 19-Jan-2008 16:04:08 GMT; path=/; domain=.oformi.net; httponly Set-Cookie: dle_hash=deleted; expires=Sat, 19-Jan-2008 16:04:08 GMT; path=/; domain=.oformi.net; httponly
Причём тормозит как-то странно. То тормозит, то нет.
-
В данный момент занимаюсь созданием своей CMS и дошёл до пункта мультиязычность.
Варианта я вижу три.
1 - Параллельный контент.
На каждый существующий язык мы создаем дополнительные поля и работаем с ними.
2 - Каждый материал постим отдельно и держим в таблице поле lang
Тоесть создаем статьи отдельно и указываем у них поле "Язык"
3 - Делаем статьи отдельно и держим таблицу связей такого вида:
id ru_id en_id fr_id и т.п.
Тоесть храним ID всех статей и в зависимости от языка подгружаем нужную.
По сути - автоматизированный второй вариант. Нужно продумать только присоединение статей в другом языке.
Чтобы когда мы обращались к контенту по ID/AltName прогружался контент в нужном языке.
Какой вариант по Вашему мнению правильный и почему?
-
Средствами движка никак. В движке нету понятия "Каталог видеороликов".
-
-
И в итоге получаете кучу ошибок из-за совпадающих ID =) Получаете юзеров с новостями, которые они никогда не постили и т.п.
Нужна помощь - стучите в асю.
-
Стучите в асю.
Мини блог или статусы icq
в Запросы на создание модификаций
Опубликовано:
Имелся в виду не этот статус =))))))
А статус типа "Кушаю" и т.п.
На коммерческой основе готов реализовать.