Перейти к публикации

IT-Security

Клиенты
  • Публикации

    1 592
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    12

Сообщения, опубликованные пользователем IT-Security

  1. Тут скорее не дизайнер, а верстальщик нужен.

    90% описанного тут это вёрстка с применением JS и фреймворков. Такими знаниями далеко не каждый дизайнер владеет.

    У меня в студии впринципе есть и дизайнер и верстальщик.

    Примеры работ:

    http://www.kadisphoto.ru/

    http://www.kadiscat.ru/

    http://www.ksist.ru/

    http://www.newleaf.ru/ (Доделываем свой движок обновим контент)

    http://skat-group.org/

    - http://skat-group.org/index.php?site=1

    - http://skat-group.org/index.php?site=2

    - http://skat-group.org/index.php?site=3

    Есть интересно, то можно пообщаться.

  2. Может наконец-то какое-то 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');

  3. Ну тогда пишите так:

    "Я такой-то такой-то или какого-нибудь идиота-программиста или школьника или бригаду таджиков, которая знает PHP, чтобы они мне за 10 000 рублей написали супер-мега интернет магазин!

    Подпись. Дата"

    Ниодин нормальный программист не будет гробить своё время на НОРМАЛЬНЫЙ продукт за 10 000 рублей и ТЕМ БОЛЕЕ интегрировать его в DLE, который почему-то люди считают панацеей, хотя если разобраться, то в движке нету НИ-ФИ-ГА для создания полноценного бизнес-сайта. Это НОВОСТНОЙ движок и ВСЕГДА им останется.

    И никакие уверения типа "Имея прямые руки можно строить любые сайты" никогда не станут реальностью. PR и не более.

  4. Фишка в том, что большинство инъекций можно применить только будучи админом галереи. Но это не оправдание, чтобы оставлять дырку.

    Ибо любой, кто стырит куки админа поимеет весь сайт.

    Да и о типах данных автор тоже не имеет понятия.

    В PHP типы конечно прозрачны, но делать так:

    $show_albom=='0' - маразм.

    Это INT преобразовывается в STRING и сравнивается...

  5. Сча поглядим фото-альбомы...

    Начнём с того, что с выключенными 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

    Не модуль, а решето. Заходите кто хотите, берите что хотите.... И то, что проверяются привелегии не должно быть отмазкой. Дырка есть?Есть!

  6. Я думаю я без Вас как-нибудь разберусь. Смысл поста в том, что если любишь ставить сторонние бесплатные (И не очень) модули, то будь готов к тому, что сайт поимеют.

    Если люди не в состоянии сами себя защитить или правильно писать модули - то пусть обращаются.

    Как видите бесплатно я дырки тоже под настроение нахожу. Хотел бы сделать гадость - поимел бы сотню-другую сайтов, где этот модуль стоит.

  7. Внимание всем пользователям модуля VIP-Serials!

    Присутствует уязвимость высокого уровня опасности!

    Класс: SQL-Injection

    Удалённый пользователь может совершать запросы к базе данных

    Уязвимый файл:

    engine/modules/vip.php

    Исправление:

    		Найти:
    
    			$serial = stripslashes($serial);
    
    		Заменить на:
    
    			$serial = $db->safesql($serial);

    Версия в которой нашёл - 2.6

    Подозреваю, что автор не имеет никакого понятия о безопасности веб-приложений и уязвимы все версии.

    Уязвимы все сайты, на которых стоит этот модуль.

  8. Тормозит хостинг.

    А ещё очень интересные заголовки он посылает:

    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

    Причём тормозит как-то странно. То тормозит, то нет.

  9. В данный момент занимаюсь созданием своей CMS и дошёл до пункта мультиязычность.

    Варианта я вижу три.

    1 - Параллельный контент.

    На каждый существующий язык мы создаем дополнительные поля и работаем с ними.

    2 - Каждый материал постим отдельно и держим в таблице поле lang

    Тоесть создаем статьи отдельно и указываем у них поле "Язык"

    3 - Делаем статьи отдельно и держим таблицу связей такого вида:

    id ru_id en_id fr_id и т.п.

    Тоесть храним ID всех статей и в зависимости от языка подгружаем нужную.

    По сути - автоматизированный второй вариант. Нужно продумать только присоединение статей в другом языке.

    Чтобы когда мы обращались к контенту по ID/AltName прогружался контент в нужном языке.

    Какой вариант по Вашему мнению правильный и почему?

×
×
  • Создать...