За последние 24 часа нас посетили 17716 программистов и 1623 робота. Сейчас ищут 1280 программистов ...

как обезопасить себя от "закладок" при аутсорсе

Тема в разделе "Вопросы от блондинок", создана пользователем orfelin, 9 июл 2011.

  1. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    первое что приходит в голову это менять логин и пароль к БД а так же менять имя переменной/класса для работы с бд.
    причем не автозаменой а вразумительно в коде с анализом что же оно там делает.

    хотя имхо можно и промахнуться.

    но вопрос актуален, потму что оч большой объем работ отдается на фриланс и в чистоплотности есть основания сомневаться.
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    orfelin
    Никак. При работе с удалёнными заказчиками я всегда оставляю возможность для себя получить полный доступ к проекту и серверу. Это делается на тот случай, если работодатель решил не заплатить за проект, заплатить меньшую сумму или на более тридцати дней после сдачи проекта задерживает оплату.
     
  3. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    ну это вы сейчас как программист рассуждаете и я как прогер с 15 летним стажем понимаю вас, но бывает и обратная ситуация когда заказчик все обговоренные условия выполнил но... и далее куча вариантов.

    или просто жадность и человек решит денег срубить или попакостить просто так...

    100% что через аналогичную проблему проходили многие кто когда либо с аутсорсом сталкивался и каждый как то ее для себя решал. Вот и хочется опыт перенят.

    ЗЫ, Elkaz, только чур без обид:
    при наличии договора и выполнении заказчиком всех пунктов договора такая самодеятельноть это уголовное преступление если чё ;-) и не только на территории РФ.
    более того повод обвинить вас в нарушении договора и расторгнуть его + уголовное преследование.

    так что не все однозначно. только давайте холиварить не будем. это ваше решение ставить закладки или нет. я его понимаю, и просто изложил юридическую составляющую этого действия.
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    А я не работаю с ненадёжными людьми, я делаю честно и без закладок, а мне платят без задержек и строго оговоренную сумму... (правда последнее время давно уже не работал, хороших заказчиков мало очень)

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

    Хотя как
    Вы и сами должны это понимать...

    Иногда одна не поставленная точка в коде (которую никакими авто-тестами не найдёшь) может открыть все двери к скрипту... (и к паролям и логинам)
     
  5. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    ну у меня опыть только win32app разработки а там проблематично шило в мешке утаить. по крайней мере я бы знал где искать. Что же касается пхп то мне сложно понять где могут оставить и как искать.
    потому и спрашиваю на профильном форуме.

    вот тут я не понимаю как... если вся работа с БД обязана вестись через один объект который к примеру 100% мной написан и я в нем каждую запятую знаю. соотв если я нахожу в чужом коде доступ к бд в обход моего объекта это уже повод высказать претензию или внимательнее анализировать код.

    далее меняя имя класса и переменной для работы с БД я ессно заменю ее и в чужом коде но только в тех функциях которые я понимаю что делают. те которые не понимаю буду анализировать.
    пабота ацкая и если аутсорс оч большой то может по времени совпасть со сроком разработки... а как иначе?... я не знаю.
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Именно в этом случае будет уголовная ситуация.

    Ищите проверенных людей, у которых есть не портфолио, а репутация в определенных кругах.

    Я же сказал, что это только в трёх перечисленных выше пунктах (неисполнение заказчиком обязательств). После того как заказчик выкупил продукт интеллектуального труда, любые манипуляции без ведома заказчика с моей стороны невозможны. Во всех иных случаях продукт является моим, права на него не выкуплены. Следовательно я могу делать что захочу со своим продуктом.

    Как обезопасить себя, будучи заказчиком?
    а) Убедиться в наличии собственного сайта/блога/портала у разработчика
    б) Убедиться в том, что исполнитель присутствует в социальных сетях, профессиональных форумах (и уже не один год)
    в) Чётко выполнять все обязательства со своей стороны. 30%-ый аванс профессионального разработчика мотивирует на ответственность лучше всего (по крайней мере меня). Если проект большой (сумма в конце тоже большая), мне работать не хочется — ибо деньги виртуальные ещё N месяцев
    г) Стараться понимать ситуацию разработчика (если он фрилансер). В этом случае повышается лояльность разработчика к заказчику. Конечно стоит понимать, что позволять садиться себе на шею нельзя :)

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

    С переездом домой я перестал заниматься фрилансом. Есть один достаточно старый заказчик, который нашёл меня тут же — кое-что дорабатываю. Удобно и просто. От фриланса отказался :) Две работы как-то не позволяют :)))
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ой ли ?
    В таком случае есть сомнения в вашей квалификации как программиста.

    Закладки это вовсе не обязательно большая функция которая называется "троян бэкдорович вирусянов", (например если брать win32 софт а не РНР, чтоб вам понятнее было) квалифицированный программист может просто знать об (например) утечке памяти, 0-day, итд и не исправить, или допустить специально (они бывают, есть они и сейчас в винде например, без этого редко когда код обходится, и найти бывает их не может огромный штат тестеров)

    Так вот в РНР тоже есть куча способов оставить кучу дыр, таким образом что найти не смогут и десятки специалистов даже если весь код до последней скобки прочитают...
     
  8. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Vladson
    Специалисты-то найти смогут, если знают об этом :) А вот остальные — нет
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Честно ? А чего же это в линуксе который по сути тестируют тысячи высококласснейших специалистов, до сих пор находятся дыры через которые можно залезть в систему ? Уж за столько лет можно было бы и все отловить...
     
  10. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    я не специалист в пхп. и очень многоих тонкостей не знаю. Будете уповать на общие алгоритмические принципы строения построения кода? ну ну. холивар явно не для этой темы.

    И потом вы же не станете утверждать что 15 летний опыт сетевого программирование windows/unix делает меня спецом по пхп и разработке на пхп. и обратное - 15 летний стаж в пхп должен делать человека спецом в разработке высоконпроизводительных серверных систем под windows и unix

    про мемлики вы хорошо сказали, со свойе стороны могу и про дедлоки добавить и переполнения массивов.
    но, опять же - ни каждое win32 приложение разрабатывается с сетевым функционалом и если он проектом не предусмотрен то наличие в коде сетевых функций мониторится за 30 секунд. а какой захват контроля если приложение не имеет выхода в сеть? если только телепатически.

    Сайт же всегда в сети и любая залейка в любом скрипте может настеж открыть дверь ко всему соджержимому сервера и БД. и где и что искать - тут любой неспециалист расстеряется.

    +1


    ЗЫ давайте к теме вернемся.
    почему переименование класса работы с БД и смена логина пароля в "секретном" конфиг файле не поможет уберечься от доступа к бд из "неправильного" кода?

    по моей логике если осталась закладка которая может напакостить в БД то она или должна к бд напрямую ломиться - это простым поиском по коду выясняется есть ли вызов функци или нет.
    или она должна с бд работать через существующий класс. и если его переименовать то функция потерпит облом.

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

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    orfelin
    Именно на них, закладки они и на QBasic-e закладки.

    Тем более вы должны это понимать... Вы же согласитесь что сетевое программирование отличается от скажем графики ?
    Тут не так что есть формула и надо её посчитать, в сетевом программировании (как и в РНР кстати) надо работать с серверами, демонами, и.т.д. На них надо отправлять запросы и получать ответы

    Представьте себе что вам независимый эксперт говорит "тут закладок нет". Вот стоит даже 10 специалистов высокого класса и все говорят "не вижу"

    А автор кода в это время вместо пароля на сайте вводит
    Код (Text):
    1. 1" OR "1"="1
    Это стандартная процедура, никаких "закладок" не надо, код работающий с БД выглядит точно также как и в "нормальном" продукте без закладок, но SQL-запрос проверки пароля пойдёт в таком виде
    Код (Text):
    1. SELECT * WHERE password = "1" OR "1"="1"
    Естественно сработает условие "1"="1" независимо password в базе равно "1" или неравно

    (конечно это приукрашено и специалисту такой трюк легко увидеть, по этому такое в качестве закладок никто не делает, но ведь если специалист вставляющий закладку действительно специалист, то уж наверное он знает трюки посложнее)
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Я заметил, что после заключения письменного договора, заказчик не шибко беспокоится за доступ к базам данных.
    Наверное, потому что каждый нормальный договор включает пукнт, который запрещает разглашение конфиденциальной информации.
     
  13. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    да но мы при разработке сервера или сетевого сервиса никаким боком SQL инъекций не касаемся. и если абстрагироваться то сетевик ничего про БД может не знать и про синтаксис SQL тоже и что можно через POST или GET так логин и пароль передать что drop table обеспечен.
    он пишет сервера и отлично это делает.
    а SQL инъекции это уже специфика php и работы пхпшника. я только это имел ввиду.

    вы же не будете утверждать что человек который всегда ( подчеркиваю всегда ) писал на пхп знает и понимает как std::map работает и поиск по дереву ведет.

    более того я встречал отличных пхпшников которые не знаю в каком виде в памяти числа представляются и BigEndian для них пустой звук а BYTE и DWORD что то ругательное. Опять же в каждом языке свои специфики. и если сишник без этих знаний физически не может правльный код писать то пхпшнику пофиг unsigned int или unsigned long long у него тип переменных.
     
  14. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    orfelin
    сразу после сдачи проекта необходимо сделать бэкап сайта и базы данных. это позволит в случае чего восстановиться до версии, сданной исполнителем.

    но обычно добросовестные заказчики не волнуются об этом вопросе :)
     
  15. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    + "правльный" заказчик если имеется возможность то запускает в песочницу - отдельный сервер как раз куда можно аутсорсеров пускать безболезненно. и даже если там все стереть то админ из бекапа поднимет за 1 час.
    А "боевой" сервер при этом спокойно продолжает работу
     
  16. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    в моем случае потеря даже данных на 30 минут влечет в полне реальные финансовые потери


    это до первого "звоночка"
     
  17. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    orfelin
    тогда нужно обращаться только к тем фрилансерам, у которых
     
  18. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    стараюсь, но к сожалению это не гарантия надежности.
     
  19. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Заказывайте аудит, что тут думать. Раз реальные финансовые потери - то аудит обязателен, как на закладки, так и на криворукость.
    Я может вас удивлю, но уголовная ситуация возникает вне зависимости от статуса оплаты за проект. Более того, ее можно подвести даже если программист, сделавший закладку, вообще к ней не прикасался. Для решения вопросов оплаты существуют другие механизмы - договора, суды, т.д. Закладки и уж тем более их использование - изначально подсудное дело.
     
  20. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Драсте !!!

    Я один юзал SQL в Си читал про использование оного в паскале и регулярно вижу аналогичное на десятке других языков ? (как web так и нет)

    А то что в Mozilla Firefox используется SQLite для хранения истории тоже ни о чём не говорит ?

    Там такие самые инъекции возможны, и даже круче...
     
  21. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    улыбнуло. хранение и поиск истории это конечно сильно. наверное у мозилы еще порт открыт во вне чтобы любой желающий подключился к ней и мог в вашей истории поковыряться передавая по сети строки с sql запросами
    только мозала это прикладное программирование там частенько требуется данные хранить и обрабатывать и ничего лучше бд пока не придумали.

    я же за системноепрограммирование говорил...
    не будете же вы утверждать что разработчик драйверов использует SQL в написании драйвера?
    или разрабу DirectX непременно ваш sql подавай для трасформироания матрицы вида в матрицу проекции, а в OpenGL для тесиляции .
    или вы имете ввиду что в недрах апача все сигналы между потоками через sql запросы передаются?
    а критические секции лочатся через соотвествующую запись в БД ?
    могу еще под сотню примеров вам привести. и все они будут крутыми спецами своего дела без малейшего знания про sql и нюансы веб разработки а значит по вашей логике "неправльные" какие то программисты. )))
    однобоко очент смотрите.

    зы. хорошо я вам переформулирую фразу чтобы вы не цеплялись за слова - sql инъекции в пхп встречаются значительно чаще, потому что имхо пхп это 99% проектов web и работа с бд. И сложно найти опытного пхпшника который ничего не знает про БД и/или слабо разбирается в sql.
    в других же сферах программирования это значительно чаще встречается. Только поэтому я вам и сказал что имеет место быть опытный программист asm, c, с++ ничего не понимающий в веб разработке и нюансах приема и обработки sql запросов. и возможных при этом sql инъекций и ничего криминального в этом нет поскольку для его работы оно просто не нужно
     
  22. orfelin

    orfelin Активный пользователь

    С нами с:
    3 мар 2011
    Сообщения:
    36
    Симпатии:
    0
    спасибо за совет. уже думаю в этом направлении. Да и вроде тут на форуме в каком то топике рекомендовали аудитора неплохого и цены вроде не заоблачные.
     
  23. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Спрос у нас в стране на аудиторов такой, что, как где-то читал, "в рынке аудиторских услуг больше всего заинтересованы сами аудиторы", соответственно и специалистов (тех, кто специализируется на аудите) мало.
    Я бы не против попрактиковаться, особенно если это можно как-то официально оформить.
     
  24. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Да поймите наконец что SQL это пример принципа, в других языках бывают вставки вредоносных вещей через переполнение стека если это ASM или через переполнение массива если это Си, или ещё через фиг знает что НО ВСЁ ЭТО ОДНИ И ТЕ ЖЕ ЯЙЦА, ТОЛЬКО В ПРОФИЛЬ (научитесь уже мыслить не одним языком программирования, а образно, байтами и машинными кодами) Принципы то везде одни и те же, подача на вход функции/скрипта/сервера/порта/итд того что там быть в теории не должно !!!!

    И если вы знаете об этих принципах на Си, то понять их на РНР труда вам не должно составить. Однако почему-то вы продолжаете доказывать мне что РНР это что-то из ряда вон выходящее и что программист на любом другом языке может не знать. ДОЛЖЕН знать.

    Людей способных его провести качественно (а не взять деньги и навешать лапшу на уши) тоже очень мало... (изучал этот рынок, как и на рынке РНР 99% ламо которое просто хочет рубить бабло с лохов)
     
  25. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Да уже много раз писали об этом и подобном. И пункты всегда одни, только в разном порядке важности. И как всегда - всё относительно в этом Мире, ничем 100% гарантии не достич.
    В данном случае, основные будут такие:
    - Договор
    - Проверенные исполнители
    - Достойная оплата

    Договор должен строго соблюдаться обеими сторонами. Малейшее нарушение - договор разорван. И дальше уже дело второй стороны, что делать, толи закрыть глаза на это, толи помахать ручкой.
    Проверенные исполнители ни коем образом не определяются ни наличием сайта, ни участием в форумах и тем более соцсетях. Это, во-первых те, с кем Вы уже работали, во-вторых рекомендованные Вам от людей, которым Вы верите, в-третьих, имеющие нормальную общую репутацию. Такие люди, как правило, имеют многолетний опыт и стоят дорого.
    Оплата должна быть такой, чтобы исполнитель чувствовал себя Человеком, а не тварью дрожащей. Если Вы решили сэкономить и нанять "студента", то забудьте о качестве и надёжности кода и/или проекта в целом. Такая экономия допустима для домашней странички Пупкина, но на серьёзных проектах - нет, Вы потратите столько же денег или даже больше, нанимая аудиторов и пр., времени - всегда больше.

    Серьёзные, думающие заказчики так и делают, но их мало, а вакансий у них ещё меньше, к сожалению. И если кому-то повезло начать работать с такими и сработались, то сотрудничество будет длиться годами или даже десятилетиями. Этому можно только позавидовать.
    А закладки в любом случае не приемлемое решение, так же как кидалово со стороны заказчика. Это и потеря репутации, и, в конечном счёте за длительный период, потеря денег. Такое могут себе позволить только "однодневки", а с такими дело лучше не иметь...