первое что приходит в голову это менять логин и пароль к БД а так же менять имя переменной/класса для работы с бд. причем не автозаменой а вразумительно в коде с анализом что же оно там делает. хотя имхо можно и промахнуться. но вопрос актуален, потму что оч большой объем работ отдается на фриланс и в чистоплотности есть основания сомневаться.
orfelin Никак. При работе с удалёнными заказчиками я всегда оставляю возможность для себя получить полный доступ к проекту и серверу. Это делается на тот случай, если работодатель решил не заплатить за проект, заплатить меньшую сумму или на более тридцати дней после сдачи проекта задерживает оплату.
ну это вы сейчас как программист рассуждаете и я как прогер с 15 летним стажем понимаю вас, но бывает и обратная ситуация когда заказчик все обговоренные условия выполнил но... и далее куча вариантов. или просто жадность и человек решит денег срубить или попакостить просто так... 100% что через аналогичную проблему проходили многие кто когда либо с аутсорсом сталкивался и каждый как то ее для себя решал. Вот и хочется опыт перенят. ЗЫ, Elkaz, только чур без обид: при наличии договора и выполнении заказчиком всех пунктов договора такая самодеятельноть это уголовное преступление если чё ;-) и не только на территории РФ. более того повод обвинить вас в нарушении договора и расторгнуть его + уголовное преследование. так что не все однозначно. только давайте холиварить не будем. это ваше решение ставить закладки или нет. я его понимаю, и просто изложил юридическую составляющую этого действия.
А я не работаю с ненадёжными людьми, я делаю честно и без закладок, а мне платят без задержек и строго оговоренную сумму... (правда последнее время давно уже не работал, хороших заказчиков мало очень) Зависит от исполнителя, если нормальный то как что не меняй, найдёт пути... Хотя как Вы и сами должны это понимать... Иногда одна не поставленная точка в коде (которую никакими авто-тестами не найдёшь) может открыть все двери к скрипту... (и к паролям и логинам)
ну у меня опыть только win32app разработки а там проблематично шило в мешке утаить. по крайней мере я бы знал где искать. Что же касается пхп то мне сложно понять где могут оставить и как искать. потому и спрашиваю на профильном форуме. вот тут я не понимаю как... если вся работа с БД обязана вестись через один объект который к примеру 100% мной написан и я в нем каждую запятую знаю. соотв если я нахожу в чужом коде доступ к бд в обход моего объекта это уже повод высказать претензию или внимательнее анализировать код. далее меняя имя класса и переменной для работы с БД я ессно заменю ее и в чужом коде но только в тех функциях которые я понимаю что делают. те которые не понимаю буду анализировать. пабота ацкая и если аутсорс оч большой то может по времени совпасть со сроком разработки... а как иначе?... я не знаю.
Именно в этом случае будет уголовная ситуация. Ищите проверенных людей, у которых есть не портфолио, а репутация в определенных кругах. Я же сказал, что это только в трёх перечисленных выше пунктах (неисполнение заказчиком обязательств). После того как заказчик выкупил продукт интеллектуального труда, любые манипуляции без ведома заказчика с моей стороны невозможны. Во всех иных случаях продукт является моим, права на него не выкуплены. Следовательно я могу делать что захочу со своим продуктом. Как обезопасить себя, будучи заказчиком? а) Убедиться в наличии собственного сайта/блога/портала у разработчика б) Убедиться в том, что исполнитель присутствует в социальных сетях, профессиональных форумах (и уже не один год) в) Чётко выполнять все обязательства со своей стороны. 30%-ый аванс профессионального разработчика мотивирует на ответственность лучше всего (по крайней мере меня). Если проект большой (сумма в конце тоже большая), мне работать не хочется — ибо деньги виртуальные ещё N месяцев г) Стараться понимать ситуацию разработчика (если он фрилансер). В этом случае повышается лояльность разработчика к заказчику. Конечно стоит понимать, что позволять садиться себе на шею нельзя Понимаете, чаще всего программисты — анархисты. Не в том плане, что плюют на законы и занимаются оргиями. А в том плане, что там где много лишней бюрократии, там стараемся не работать. Всё конечно индивидуально, но как правило так оно и есть. Нам важнее договориться на словах, получить от заказчика деньги, условия и отдать заказачику готовый продукт. С переездом домой я перестал заниматься фрилансом. Есть один достаточно старый заказчик, который нашёл меня тут же — кое-что дорабатываю. Удобно и просто. От фриланса отказался Две работы как-то не позволяют ))
Ой ли ? В таком случае есть сомнения в вашей квалификации как программиста. Закладки это вовсе не обязательно большая функция которая называется "троян бэкдорович вирусянов", (например если брать win32 софт а не РНР, чтоб вам понятнее было) квалифицированный программист может просто знать об (например) утечке памяти, 0-day, итд и не исправить, или допустить специально (они бывают, есть они и сейчас в винде например, без этого редко когда код обходится, и найти бывает их не может огромный штат тестеров) Так вот в РНР тоже есть куча способов оставить кучу дыр, таким образом что найти не смогут и десятки специалистов даже если весь код до последней скобки прочитают...
Честно ? А чего же это в линуксе который по сути тестируют тысячи высококласснейших специалистов, до сих пор находятся дыры через которые можно залезть в систему ? Уж за столько лет можно было бы и все отловить...
я не специалист в пхп. и очень многоих тонкостей не знаю. Будете уповать на общие алгоритмические принципы строения построения кода? ну ну. холивар явно не для этой темы. И потом вы же не станете утверждать что 15 летний опыт сетевого программирование windows/unix делает меня спецом по пхп и разработке на пхп. и обратное - 15 летний стаж в пхп должен делать человека спецом в разработке высоконпроизводительных серверных систем под windows и unix про мемлики вы хорошо сказали, со свойе стороны могу и про дедлоки добавить и переполнения массивов. но, опять же - ни каждое win32 приложение разрабатывается с сетевым функционалом и если он проектом не предусмотрен то наличие в коде сетевых функций мониторится за 30 секунд. а какой захват контроля если приложение не имеет выхода в сеть? если только телепатически. Сайт же всегда в сети и любая залейка в любом скрипте может настеж открыть дверь ко всему соджержимому сервера и БД. и где и что искать - тут любой неспециалист расстеряется. +1 ЗЫ давайте к теме вернемся. почему переименование класса работы с БД и смена логина пароля в "секретном" конфиг файле не поможет уберечься от доступа к бд из "неправильного" кода? по моей логике если осталась закладка которая может напакостить в БД то она или должна к бд напрямую ломиться - это простым поиском по коду выясняется есть ли вызов функци или нет. или она должна с бд работать через существующий класс. и если его переименовать то функция потерпит облом. если только закладка для доступа к бд не использует другу легальную функцию которая при определенных параметрах может что то нехорошее в бд передать. с этим да, зассада и хз как искать такое
orfelin Именно на них, закладки они и на QBasic-e закладки. Тем более вы должны это понимать... Вы же согласитесь что сетевое программирование отличается от скажем графики ? Тут не так что есть формула и надо её посчитать, в сетевом программировании (как и в РНР кстати) надо работать с серверами, демонами, и.т.д. На них надо отправлять запросы и получать ответы Представьте себе что вам независимый эксперт говорит "тут закладок нет". Вот стоит даже 10 специалистов высокого класса и все говорят "не вижу" А автор кода в это время вместо пароля на сайте вводит Код (Text): 1" OR "1"="1 Это стандартная процедура, никаких "закладок" не надо, код работающий с БД выглядит точно также как и в "нормальном" продукте без закладок, но SQL-запрос проверки пароля пойдёт в таком виде Код (Text): SELECT * WHERE password = "1" OR "1"="1" Естественно сработает условие "1"="1" независимо password в базе равно "1" или неравно (конечно это приукрашено и специалисту такой трюк легко увидеть, по этому такое в качестве закладок никто не делает, но ведь если специалист вставляющий закладку действительно специалист, то уж наверное он знает трюки посложнее)
Я заметил, что после заключения письменного договора, заказчик не шибко беспокоится за доступ к базам данных. Наверное, потому что каждый нормальный договор включает пукнт, который запрещает разглашение конфиденциальной информации.
да но мы при разработке сервера или сетевого сервиса никаким боком SQL инъекций не касаемся. и если абстрагироваться то сетевик ничего про БД может не знать и про синтаксис SQL тоже и что можно через POST или GET так логин и пароль передать что drop table обеспечен. он пишет сервера и отлично это делает. а SQL инъекции это уже специфика php и работы пхпшника. я только это имел ввиду. вы же не будете утверждать что человек который всегда ( подчеркиваю всегда ) писал на пхп знает и понимает как std::map работает и поиск по дереву ведет. более того я встречал отличных пхпшников которые не знаю в каком виде в памяти числа представляются и BigEndian для них пустой звук а BYTE и DWORD что то ругательное. Опять же в каждом языке свои специфики. и если сишник без этих знаний физически не может правльный код писать то пхпшнику пофиг unsigned int или unsigned long long у него тип переменных.
orfelin сразу после сдачи проекта необходимо сделать бэкап сайта и базы данных. это позволит в случае чего восстановиться до версии, сданной исполнителем. но обычно добросовестные заказчики не волнуются об этом вопросе
+ "правльный" заказчик если имеется возможность то запускает в песочницу - отдельный сервер как раз куда можно аутсорсеров пускать безболезненно. и даже если там все стереть то админ из бекапа поднимет за 1 час. А "боевой" сервер при этом спокойно продолжает работу
в моем случае потеря даже данных на 30 минут влечет в полне реальные финансовые потери это до первого "звоночка"
Заказывайте аудит, что тут думать. Раз реальные финансовые потери - то аудит обязателен, как на закладки, так и на криворукость. Я может вас удивлю, но уголовная ситуация возникает вне зависимости от статуса оплаты за проект. Более того, ее можно подвести даже если программист, сделавший закладку, вообще к ней не прикасался. Для решения вопросов оплаты существуют другие механизмы - договора, суды, т.д. Закладки и уж тем более их использование - изначально подсудное дело.
Драсте !!! Я один юзал SQL в Си читал про использование оного в паскале и регулярно вижу аналогичное на десятке других языков ? (как web так и нет) А то что в Mozilla Firefox используется SQLite для хранения истории тоже ни о чём не говорит ? Там такие самые инъекции возможны, и даже круче...
улыбнуло. хранение и поиск истории это конечно сильно. наверное у мозилы еще порт открыт во вне чтобы любой желающий подключился к ней и мог в вашей истории поковыряться передавая по сети строки с sql запросами только мозала это прикладное программирование там частенько требуется данные хранить и обрабатывать и ничего лучше бд пока не придумали. я же за системноепрограммирование говорил... не будете же вы утверждать что разработчик драйверов использует SQL в написании драйвера? или разрабу DirectX непременно ваш sql подавай для трасформироания матрицы вида в матрицу проекции, а в OpenGL для тесиляции . или вы имете ввиду что в недрах апача все сигналы между потоками через sql запросы передаются? а критические секции лочатся через соотвествующую запись в БД ? могу еще под сотню примеров вам привести. и все они будут крутыми спецами своего дела без малейшего знания про sql и нюансы веб разработки а значит по вашей логике "неправльные" какие то программисты. ))) однобоко очент смотрите. зы. хорошо я вам переформулирую фразу чтобы вы не цеплялись за слова - sql инъекции в пхп встречаются значительно чаще, потому что имхо пхп это 99% проектов web и работа с бд. И сложно найти опытного пхпшника который ничего не знает про БД и/или слабо разбирается в sql. в других же сферах программирования это значительно чаще встречается. Только поэтому я вам и сказал что имеет место быть опытный программист asm, c, с++ ничего не понимающий в веб разработке и нюансах приема и обработки sql запросов. и возможных при этом sql инъекций и ничего криминального в этом нет поскольку для его работы оно просто не нужно
спасибо за совет. уже думаю в этом направлении. Да и вроде тут на форуме в каком то топике рекомендовали аудитора неплохого и цены вроде не заоблачные.
Спрос у нас в стране на аудиторов такой, что, как где-то читал, "в рынке аудиторских услуг больше всего заинтересованы сами аудиторы", соответственно и специалистов (тех, кто специализируется на аудите) мало. Я бы не против попрактиковаться, особенно если это можно как-то официально оформить.
Да поймите наконец что SQL это пример принципа, в других языках бывают вставки вредоносных вещей через переполнение стека если это ASM или через переполнение массива если это Си, или ещё через фиг знает что НО ВСЁ ЭТО ОДНИ И ТЕ ЖЕ ЯЙЦА, ТОЛЬКО В ПРОФИЛЬ (научитесь уже мыслить не одним языком программирования, а образно, байтами и машинными кодами) Принципы то везде одни и те же, подача на вход функции/скрипта/сервера/порта/итд того что там быть в теории не должно !!!! И если вы знаете об этих принципах на Си, то понять их на РНР труда вам не должно составить. Однако почему-то вы продолжаете доказывать мне что РНР это что-то из ряда вон выходящее и что программист на любом другом языке может не знать. ДОЛЖЕН знать. Людей способных его провести качественно (а не взять деньги и навешать лапшу на уши) тоже очень мало... (изучал этот рынок, как и на рынке РНР 99% ламо которое просто хочет рубить бабло с лохов)
Да уже много раз писали об этом и подобном. И пункты всегда одни, только в разном порядке важности. И как всегда - всё относительно в этом Мире, ничем 100% гарантии не достич. В данном случае, основные будут такие: - Договор - Проверенные исполнители - Достойная оплата Договор должен строго соблюдаться обеими сторонами. Малейшее нарушение - договор разорван. И дальше уже дело второй стороны, что делать, толи закрыть глаза на это, толи помахать ручкой. Проверенные исполнители ни коем образом не определяются ни наличием сайта, ни участием в форумах и тем более соцсетях. Это, во-первых те, с кем Вы уже работали, во-вторых рекомендованные Вам от людей, которым Вы верите, в-третьих, имеющие нормальную общую репутацию. Такие люди, как правило, имеют многолетний опыт и стоят дорого. Оплата должна быть такой, чтобы исполнитель чувствовал себя Человеком, а не тварью дрожащей. Если Вы решили сэкономить и нанять "студента", то забудьте о качестве и надёжности кода и/или проекта в целом. Такая экономия допустима для домашней странички Пупкина, но на серьёзных проектах - нет, Вы потратите столько же денег или даже больше, нанимая аудиторов и пр., времени - всегда больше. Серьёзные, думающие заказчики так и делают, но их мало, а вакансий у них ещё меньше, к сожалению. И если кому-то повезло начать работать с такими и сработались, то сотрудничество будет длиться годами или даже десятилетиями. Этому можно только позавидовать. А закладки в любом случае не приемлемое решение, так же как кидалово со стороны заказчика. Это и потеря репутации, и, в конечном счёте за длительный период, потеря денег. Такое могут себе позволить только "однодневки", а с такими дело лучше не иметь...