Буду краток, ибо из-за сабжа уже падаю с ног, завтра расскажу подробнее. Писал сегодня скрипт генерации баннеров для участников проекта Nemerle (Бейджи участников
того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных
P.S: Да, вы правильно подумали. Я случайно пропустил знак доллара в паре мест и потом долго вдуплял, а с какого хрена у меня начали появляться строковые переменные в самых неожиданных местах и пропадать кусочки результатов вычислений
Приветствую, kochetkov.vladimir, вы писали:
k> P.S: Да, вы правильно подумали. Я случайно пропустил знак доллара в паре мест и потом долго вдуплял, а с какого хрена у меня начали появляться строковые переменные в самых неожиданных местах и пропадать кусочки результатов вычислений
Ага, прямо по стопам Мамута. У того кронтаб виноват, а у тебя пхп
Здравствуйте, 0K, Вы писали:
KV>>того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных 0K>А что ПХП еще кто-то использует (кроме школьников)?
студенты еще используют вроде
Здравствуйте, kochetkov.vladimir, Вы писали:
k> того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных
<?php
// correctecho hiImAString;
// correctecho hello . world . _6789;
// correctthisisastandalonestring;
// correct, outputs 0echo string + anotherstring - yetanotherstring;
// correct, outputs 1concatenatedecho true . false . concatenated;
// incorrect, syntax errorecho cantdothis . 1234567890;
// incorrect, syntax error, use of PHP keywordsecho try . and . do . this . if . you . can . else . break;
?>
k> P.S: Да, вы правильно подумали. Я случайно пропустил знак доллара в паре мест и потом долго вдуплял, а с какого хрена у меня начали появляться строковые переменные в самых неожиданных местах и пропадать кусочки результатов вычислений
Здравствуйте, kochetkov.vladimir, Вы писали:
k> Буду краток, ибо из-за сабжа уже падаю с ног, завтра расскажу подробнее. Писал сегодня скрипт генерации баннеров для участников проекта Nemerle (Бейджи участников
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, kochetkov.vladimir, вы писали:
k>> P.S: Да, вы правильно подумали. Я случайно пропустил знак доллара в паре мест и потом долго вдуплял, а с какого хрена у меня начали появляться строковые переменные в самых неожиданных местах и пропадать кусочки результатов вычислений
S>Ага, прямо по стопам Мамута. У того кронтаб виноват, а у тебя пхп
Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям
Приветствую, anton_t, вы писали:
a> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям
Да, плохой язык. Об этом все знают.
KV>Буду краток, ибо из-за сабжа уже падаю с ног, завтра расскажу подробнее. Писал сегодня скрипт генерации баннеров для участников проекта Nemerle (Бейджи участников
KV>того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных
KV>P.S: Да, вы правильно подумали. Я случайно пропустил знак доллара в паре мест и потом долго вдуплял, а с какого хрена у меня начали появляться строковые переменные в самых неожиданных местах и пропадать кусочки результатов вычислений
Обычно это ловится на девелопмент-сервере, где стоит вывод ошибок в E_ALL. Вылетит warning nипа undefined constant variable2 assumed variable $variable2 или типа того.
Но согласен, что это должно быть не варнингом, а ошибкой.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, kochetkov.vladimir, Вы писали:
k>> Буду краток, ибо из-за сабжа уже падаю с ног, завтра расскажу подробнее. Писал сегодня скрипт генерации баннеров для участников проекта Nemerle (Бейджи участников
Ну согласись, что под инфраструктурой Apache-MySQL-PHP (на которой крутится nemerle.org) сам nemerle выглядел бы несколько экстравагантно Вот переведем его на IIS/ASP.net, тогда беджики будет генерить код на nemerle, обещаю. Даже для сравнения их сюда могу запостить
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, anton_t, вы писали:
a>> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям S>Да, плохой язык. Об этом все знают.
А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
Здравствуйте, kochetkov.vladimir, Вы писали:
S>>Да, плохой язык. Об этом все знают. KV>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
Про Немерле же -- ясен пень!!!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, kochetkov.vladimir, Вы писали:
k> AB>PHPUnit_TextUI_TestRunner::run($sute); k> Угу. Для скрипта в три десятка строчек, чтобы поймать то, что должен ловить интерпритатор.
А ты уверен, что он должен ловить и что это не является частью языка? Я вот не уверен (впрочем, я не большой знаток).
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Я в очередной раз не знаю, смеяться мне или плакать, от того, что есть язык, в котором такой код будет являться правильным:
не знаю как ты, а я уже плачу.. на меня свалили 2 метра стрёмных древних исходников на этом уродстве и отобрали python+django..
как же я всех ненавижу сейчас..
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных
Ну дык это ... хочешь в языках с динамической типизацией уверенности что все хорошо — пиши тесты со 100 процентным покрытием . Еще префиксы помогают. На PHP писать — это тебе не на С++, на PHP все гораздо сложнее, на компилятор надеяться нельзя .
Здравствуйте, neFormal, Вы писали:
F>Здравствуйте, kochetkov.vladimir, Вы писали:
S>>>Да, плохой язык. Об этом все знают. KV>>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
F>Python же..
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
E>Про Немерле же -- ясен пень!!!
Я вообще-то имел в виду динамические языки, "но ход ваших мыслей мне нравится"
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, kochetkov.vladimir, Вы писали:
k>> AB>PHPUnit_TextUI_TestRunner::run($sute); k>> Угу. Для скрипта в три десятка строчек, чтобы поймать то, что должен ловить интерпритатор.
AB>А ты уверен, что он должен ловить и что это не является частью языка? Я вот не уверен (впрочем, я не большой знаток).
Дык в том-то и засада, что это является частью языка. Хотя кроме того, что это прямой путь к граблям, оно ничего полезного в язык не вносит, IMHO.
Здравствуйте, neFormal, Вы писали:
F>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Я в очередной раз не знаю, смеяться мне или плакать, от того, что есть язык, в котором такой код будет являться правильным:
F>не знаю как ты, а я уже плачу.. на меня свалили 2 метра стрёмных древних исходников на этом уродстве и отобрали python+django.. F>как же я всех ненавижу сейчас..
Держись, мы мысленно будем с тобой в этот тягостный час
Говорят jetbrain'овская IDE для PHP дает лучшую (по сравнению с остальными) навигацию по коду и ловит множество граблей. Сам не проверял, хз, но вдруг поможет.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных E>Ну дык это ... хочешь в языках с динамической типизацией уверенности что все хорошо — пиши тесты со 100 процентным покрытием . Еще префиксы помогают. На PHP писать — это тебе не на С++, на PHP все гораздо сложнее, на компилятор надеяться нельзя .
До этого год писал на питоне без каких-либо особых осложнений и таких вот граблей
a>>> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям S>>Да, плохой язык. Об этом все знают.
KV>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
Здравствуйте, kochetkov.vladimir, Вы писали:
k> Дык в том-то и засада, что это является частью языка. Хотя кроме того, что это прямой путь к граблям, оно ничего полезного в язык не вносит, IMHO.
BTW. "Любим мы одних, а женимся на других" Что наглядно пока что и наблюдаем
Здравствуйте, Mamut, Вы писали:
M> Обычно это ловится на девелопмент-сервере, где стоит вывод ошибок в E_ALL. Вылетит warning nипа undefined constant variable2 assumed variable $variable2 или типа того.
Не вылетает даже с E_STRICT (PHP 5.2.11) — похоже, это допустимое поведение.
KV>P.S: Да, вы правильно подумали. Я случайно пропустил знак доллара в паре мест и потом долго вдуплял, а с какого хрена у меня начали появляться строковые переменные в самых неожиданных местах и пропадать кусочки результатов вычислений
А аналога use strict в PHP нету?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Держись, мы мысленно будем с тобой в этот тягостный час
спасибо, растроган.. :'-)
KV>Говорят jetbrain'овская IDE для PHP дает лучшую (по сравнению с остальными) навигацию по коду и ловит множество граблей. Сам не проверял, хз, но вдруг поможет.
да я в phpeclipse всё делаю.. в принципе, годится для большинства моих задач..
а меня спасёт только тотальный рефакторинг.. пока принёс с собой немножко джанговского стиля..
$user = Model::get(User, array('id' => $uid));
кстати, в php нельзя передавать классы в качестве параметра.. поэтому оно User превращает в строку(!)..
KV>>того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных E>Ну дык это ... хочешь в языках с динамической типизацией уверенности что все хорошо — пиши тесты со 100 процентным покрытием . Еще префиксы помогают. На PHP писать — это тебе не на С++, на PHP все гораздо сложнее, на компилятор надеяться нельзя .
Ага. Учитывая, что пхп вообще интерпритируемый язык, на компилятор вообще странно надеяться.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
KV>>>того, какой ответ выдает этот код и того, что этот язык еще и один из самых популярных E>>Ну дык это ... хочешь в языках с динамической типизацией уверенности что все хорошо — пиши тесты со 100 процентным покрытием . Еще префиксы помогают. На PHP писать — это тебе не на С++, на PHP все гораздо сложнее, на компилятор надеяться нельзя .
E__>Ага. Учитывая, что пхп вообще интерпритируемый язык, на компилятор вообще странно надеяться.
Ну, вообще-то РНР все же компилируется в байткод, который выполняется потом VM. Правда, компилируется он каждый раз заново, но есть возможность оставить его в байткоде (чем, собственно, и занимаются его акселераторы)
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Буду краток, ибо из-за сабжа уже падаю с ног, завтра расскажу подробнее. Писал сегодня скрипт генерации баннеров для участников проекта Nemerle (Бейджи участников
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Буду краток, ибо из-за сабжа уже падаю с ног, завтра расскажу подробнее. Писал сегодня скрипт генерации баннеров для участников проекта Nemerle (Бейджи участников
Здравствуйте, Anton Batenev, Вы писали:
F>> кстати, в php нельзя передавать классы в качестве параметра.. поэтому оно User превращает в строку(!).. AB>ЧЕГО?!
типичная запись в логах:
PHP Notice: Use of undefined constant User — assumed 'User' in blablabla.php on line 123
Здравствуйте, kochetkov.vladimir, Вы писали:
a>>> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям S>>Да, плохой язык. Об этом все знают. KV>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
Дык компонентный же паскаль!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, neFormal, Вы писали:
F> я ошибаюсь в своих догадках?.
А, так ты хочешь reflection? Тогда тебе сюда — передаешь имя класса и получаешь из него всю требуемую метаинформацию. Я просто сначала подумал, что у тебя не получается передать экземпляр класса в метод.
Здравствуйте, Anton Batenev, Вы писали:
F>> я ошибаюсь в своих догадках?. AB>А, так ты хочешь reflection? Тогда тебе сюда — передаешь имя класса и получаешь из него всю требуемую метаинформацию. Я просто сначала подумал, что у тебя не получается передать экземпляр класса в метод.
ага.. вот как и топикстартер, ты не заметил отсутствия $
а мне от "рефлекшна" нужно только get_class_vars и get_class_methods.. усё..
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, kochetkov.vladimir, Вы писали:
a>>>> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям S>>>Да, плохой язык. Об этом все знают. KV>>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась) LVV>Дык компонентный же паскаль!!!
/me с благодарностью смотрит на небо за то, что оно не заставило его делать бейджики на компонентном паскале...
Здравствуйте, kochetkov.vladimir, Вы писали:
LVV>>Дык компонентный же паскаль!!! KV>/me с благодарностью смотрит на небо за то, что оно не заставило его делать бейджики на компонентном паскале...
Дык язык-то — хороший!... Только для бейджиков не подходит...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Anton Batenev, Вы писали:
F>> а мне от "рефлекшна" нужно только get_class_vars и get_class_methods.. усё.. AB>Если код предполагается под нагрузку, то будет тормозить.
сильно?.
кстати, а что тормозит больше: вышеуказанные функции get_class_* или Reflection ?.
Здравствуйте, neFormal, Вы писали:
F> AB>Если код предполагается под нагрузку, то будет тормозить. F> сильно?.
Преждевременная оптимизация зло — что-то я "в пылу сражения" ляпнул не подумав.
Я так понимаю, что ты пытаешься сделать некоторое подобие ORM и дальше начнешь генерить в рантайме SQL запросы? Вот в этом месте я бы написал пару-тройку тестов на производительность — PHP с MySQL требует некоторой осторожности. А так, если просто reflection и ничего с ним не делать, то он достаточно быстр — т.е. вызов функции дешев.
Здравствуйте, Anton Batenev, Вы писали:
AB>Я так понимаю, что ты пытаешься сделать некоторое подобие ORM и дальше начнешь генерить в рантайме SQL запросы?
на данный момент с помощью ф-ций get_class_* определяется содержимое "моделей" и метаинформация для конкретной "модели"..
SQL запросы, можно сказать, генерятся.. сейчас простые SELECT/INSERT/UPDATE..
AB>Вот в этом месте я бы написал пару-тройку тестов на производительность — PHP с MySQL требует некоторой осторожности.
да, надо будет, если буду это внедрять..
пока это написано и лежит чуть ли не для красоты..
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, neFormal, Вы писали:
F>> AB>Если код предполагается под нагрузку, то будет тормозить. F>> сильно?.
AB>Преждевременная оптимизация зло — что-то я "в пылу сражения" ляпнул не подумав.
AB>Я так понимаю, что ты пытаешься сделать некоторое подобие ORM и дальше начнешь генерить в рантайме SQL запросы? Вот в этом месте я бы написал пару-тройку тестов на производительность — PHP с MySQL требует некоторой осторожности. А так, если просто reflection и ничего с ним не делать, то он достаточно быстр — т.е. вызов функции дешев.
Тут вообще классы на лету генерятся, и даже не тормозит особо. Хотя я предпочитаю Doctrine.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, kochetkov.vladimir, Вы писали:
a>>>>> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям S>>>>Да, плохой язык. Об этом все знают. KV>>>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась) LVV>>Дык компонентный же паскаль!!!
KV>/me с благодарностью смотрит на небо за то, что оно не заставило его делать бейджики на компонентном паскале...
Здравствуйте, Anton Batenev, Вы писали:
AB>Не вылетает даже с E_STRICT (PHP 5.2.11) — похоже, это допустимое поведение.
Может, где-то в недрах (php.ini, .htaccess, в коде) этот уровень сбрасывается? Или где-то в коде включили обработчик ошибок, который тупо жрёт всё подряд?
Курить функции error_get_last(), error_reporting() и set_error_handler().
Попробовать сделать нарочитую ошибку и вывести её последствия на страницу.
Здравствуйте, Кодт, Вы писали:
К> AB>Не вылетает даже с E_STRICT (PHP 5.2.11) — похоже, это допустимое поведение. К> Может, где-то в недрах (php.ini, .htaccess, в коде) этот уровень сбрасывается? Или где-то в коде включили обработчик ошибок, который тупо жрёт всё подряд?
— там нет ни .htaccess ни переназначения ошибок.
Ну, в твоём примере про .htaccess и конфиги php и apache ничего не говорилось.
Денвер на этот пример ругается и подвёрстывает код с подробными разъяснениями.
Возможно, что твой веб-сервер так настроен, что сообщение об ошибке было сделано незаметно.
Попробуй phpinfo() сделать...
Здравствуйте, Кодт, Вы писали:
К> Попробуй phpinfo() сделать...
Да, нашел — неправильно задал error_reporting. Вместо "E_ALL | E_STRICT" написал "E_ALL & E_STRICT".
Да, действительно:
PHP Notice: Use of undefined constant variable2 - assumed 'variable2' in /home/abbat/123.php on line 2
Notice: Use of undefined constant variable2 - assumed 'variable2' in /home/abbat/123.php on line 2
PHP Notice: Use of undefined constant variable1 - assumed 'variable1' in /home/abbat/123.php on line 5
Notice: Use of undefined constant variable1 - assumed 'variable1' in /home/abbat/123.php on line 5
PHP Notice: Undefined variable: variable2 in /home/abbat/123.php on line 5
Notice: Undefined variable: variable2 in /home/abbat/123.php on line 5
variable1
10
Здравствуйте, Anton Batenev, Вы писали:
AB>Да, нашел — неправильно задал error_reporting. Вместо "E_ALL | E_STRICT" написал "E_ALL & E_STRICT".
Фрейдопятка! "сообщать обо всех ошибках И во всех подробностях".
Старый добрый когнитивный диссонанс между естественным и математическим выражением мыслей.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Anton Batenev, Вы писали:
AB>>Да, действительно:
К>Как там Шеридан говорил — "так *** PHP или руки?"
Раз Шеридан говорил, то точно PHP
А еще я понял, почему он всех призывает тотально изучать администрирование. Он даже в разработке использует те технологии, в которых, не обладая навыками админа, можно отхватить такие грабли, что поневоле админить начинаешь
Приветствую, kochetkov.vladimir, вы писали:
k> А еще я понял, почему он всех призывает тотально изучать администрирование. Он даже в разработке использует те технологии, в которых, не обладая навыками админа, можно отхватить такие грабли, что поневоле админить начинаешь
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, kochetkov.vladimir, вы писали:
k>> А еще я понял, почему он всех призывает тотально изучать администрирование. Он даже в разработке использует те технологии, в которых, не обладая навыками админа, можно отхватить такие грабли, что поневоле админить начинаешь
S>Это которые? Просто интересно.
Там в сообщении аж два смайлика на этот счет стоит (третий).
Приветствую, kochetkov.vladimir, вы писали:
k> k>> А еще я понял, почему он всех призывает тотально изучать администрирование. Он даже в разработке использует те технологии, в которых, не обладая навыками админа, можно отхватить такие грабли, что поневоле админить начинаешь k> S>Это которые? Просто интересно. k> Там в сообщении аж два смайлика на этот счет стоит (третий).
Ну я придерживаючь правила "в каждой шутке есть доля шутки..."
Итак, что тебя заставило так сказать?
Здравствуйте, Sheridan, Вы писали:
S>Ну я придерживаючь правила "в каждой шутке есть доля шутки..." S>Итак, что тебя заставило так сказать?
Это были размышления вслух о причинах существования твоего мнении о том, что программеры должны владеть навыками администрирования. Как одна из возможных причин, предподнесенная в виде не очень удачной шутки.
Приветствую, kochetkov.vladimir, вы писали:
k> Не, это уже пройденный этап. Недавно случилось страшное и Шеридана потянуло в веб-технологии. Теперь он всем объясняет
Приветствую, kochetkov.vladimir, вы писали:
k> Угу. Тебе уязвимости (XSS, доступ к исходникам скриптов, возможно LFI, возможно HTTP Response splitting) — сюда кидать или в личку?
Я в курсе, ибо никаких защит не делал
Давай сюда, и я поумнею, и другим интересно будет.
Здравствуйте, kochetkov.vladimir, Вы писали:
k> Угу. Тебе уязвимости (XSS, доступ к исходникам скриптов, возможно LFI, возможно HTTP Response splitting) — сюда кидать или в личку?
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, kochetkov.vladimir, Вы писали:
k>> Угу. Тебе уязвимости (XSS, доступ к исходникам скриптов, возможно LFI, возможно HTTP Response splitting) — сюда кидать или в личку?
AB>Чем прогоняешь?
Когда вот так вот — навскидку, то руками. Ну + FF, обвязанный правильными расширениями (не сканерами). Когда по серьезному, то руками + основные юзкейсы сайта через ratproxy + с оглядкой на фон, где accunetix сканит на предмет xss, а xspider на все остальное. Последний — только если на работе и наши собственные сайты ибо ограничение лицензии.
Это если мы говорим исключительно о веб-приложениях и их пентестах.
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, kochetkov.vladimir, вы писали:
k>> Угу. Тебе уязвимости (XSS, доступ к исходникам скриптов, возможно LFI, возможно HTTP Response splitting) — сюда кидать или в личку?
S>Я в курсе, ибо никаких защит не делал S>Давай сюда, и я поумнею, и другим интересно будет.
Ну, как знаешь...
XSS — на самом деле, можно взять любой параметр GET-запроса, который попадает на выход
Доступ к исходникам — нужно либо делать все, что содержит код, с расширением .php, либо запрещать доступ к этим файлам или размещать их выше корня хоста.
Расщепление HTTP-заголовка — появится, как только отключишь warning'и. Из варнингов также понятно, что id передается в file_get_contents file_put_contents проходя только экранирование magic_quotes'ами (либо чем-то аналогичным). Только благодаря тому, что там к этой строке еще добавляется '/names' у тебя сейчас нет LFI (local file include) и доступа к произвольному файлу ФС с правами веб-сервера.
Еще обратил внимание (но не проверял) на недостаточный контроль данных из кук (style). Скорее всего, там тот же самый набор уязвимостей.
Приветствую, kochetkov.vladimir, вы писали:
k> XSS — на самом деле, можно взять любой параметр GET-запроса, который попадает на выход
fixed
k> Доступ к исходникам — нужно либо делать все, что содержит код, с расширением .php, либо запрещать доступ к этим файлам или размещать их выше корня хоста.
fixed
k> Расщепление HTTP-заголовка — появится, как только отключишь warning'и. Из варнингов также понятно, что id передается в file_get_contents file_put_contents проходя только экранирование magic_quotes'ами (либо чем-то аналогичным). Только благодаря тому, что там к этой строке еще добавляется '/names' у тебя сейчас нет LFI (local file include) и доступа к произвольному файлу ФС с правами веб-сервера.
походу тоже fixed
k> Еще обратил внимание (но не проверял) на недостаточный контроль данных из кук (style). Скорее всего, там тот же самый набор уязвимостей.
Жду
Приветствую, kochetkov.vladimir, вы писали:
k> Из варнингов также понятно, что id передается в file_get_contents file_put_contents проходя только экранирование magic_quotes'ами (либо чем-то аналогичным).
0_0 — это директория 0 с поддиректорией 0, 0_12 соответственно o/12/
list($a,$b) = split('/_/', $id);
$dir = "$server_root/games/a/b/";
Здравствуйте, elmal, Вы писали:
E>Ну дык это ... хочешь в языках с динамической типизацией уверенности что все хорошо — пиши тесты со 100 процентным покрытием .
Чем в данном случае помогло бы 100%-е покрытие?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, kochetkov.vladimir, Вы писали:
k> Когда вот так вот — навскидку, то руками. Ну + FF, обвязанный правильными расширениями (не сканерами).
И что, на такой простой странице можно было допустить столько ошибок? Или они лишь потенциальные и реально ими воспользоваться еще очень постараться придется?
Здравствуйте, Anton Batenev, Вы писали:
AB> И что, на такой простой странице можно было допустить столько ошибок? Или они лишь потенциальные и реально ими воспользоваться еще очень постараться придется?
У... вижу. Мне бы такого security officer на opensvn...
Здравствуйте, Sheridan, Вы писали:
k>> Доступ к исходникам — нужно либо делать все, что содержит код, с расширением .php, либо запрещать доступ к этим файлам или размещать их выше корня хоста. S>fixed
А как же опенсорс?
Здравствуйте, Sheridan, Вы писали:
k>> Еще обратил внимание (но не проверял) на недостаточный контроль данных из кук (style). Скорее всего, там тот же самый набор уязвимостей. S>Жду
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Anton Batenev, Вы писали:
AB>> И что, на такой простой странице можно было допустить столько ошибок? Или они лишь потенциальные и реально ими воспользоваться еще очень постараться придется?
AB>У... вижу. Мне бы такого security officer на opensvn...
Для Avalon'а? Так я его и так тестировать буду (security@rsdn чуть подзабросил из-за нехватки времени, каюсь. Но планирую вернутся к нему в апреле, если что). Или ты про другие проекты? Пиши в личку или сюда, если что — не вижу причин не помочь, по мере возможности, интересному открытому проекту
Notice: Use of undefined constant variable2 - assumed 'variable2' in D:\work\EasyPHP5.3.0\www\monopoly\www.php on line 8
Notice: Use of undefined constant variable1 - assumed 'variable1' in D:\work\EasyPHP5.3.0\www\monopoly\www.php on line 11
Notice: Undefined variable: variable2 in D:\work\EasyPHP5.3.0\www\monopoly\www.php on line 11
variable1 10
И читайте доки. PHP устойчив к "идиотским ошибкам", идиотские ошибки в нем не рушат работу всей системы
А вот правильность и чистота написания кода зависит от вас + пользуйтесь проверкой синтаксиса, например NetBeans выдаст предупреждение о том, что переменная не инициализирована.
Поддержка таких Notice очень полезна для работы группы разных разработчиков за маленькие деньги. Если разные модули пишут разные люди, то выход из строя одного модуля не рушит всю систему целиком. Не нужно тратить время на написание обработки ошибок.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, neFormal, Вы писали:
F>> AB>Если код предполагается под нагрузку, то будет тормозить. F>> сильно?.
AB>Преждевременная оптимизация зло — что-то я "в пылу сражения" ляпнул не подумав.
AB>Я так понимаю, что ты пытаешься сделать некоторое подобие ORM и дальше начнешь генерить в рантайме SQL запросы? Вот в этом месте я бы написал пару-тройку тестов на производительность — PHP с MySQL требует некоторой осторожности. А так, если просто reflection и ничего с ним не делать, то он достаточно быстр — т.е. вызов функции дешев.
на обычном железе арифметические операции, операции поиска в тексте, конкатенция и т.д. занимает 0.00x секунд на всю страницу при работе с mysql 0.0x если есть сортировка и временные таблицы, так же нужно учесть количество записей и бредовость запросов
Пример с одного сайта. Там косяк с индексами, но не хватает квалификации для их перепеси.
Порт с loomilы, которая дохла после 1000 записей в основной базе и работала дольше 30 секунд.
Сейчас там явно больше 12000 фильмов, я не говорю о количестве записей в таблице и о том, что машина на Linuxe уже 3 раза умерала (железо) + 1 раз был уронен блок питания на процессор Сейчас стоит на каком то страшном железе где порядка 30 сайтов + система диагностики сети (база более 300Гб уже, логи).
Время выполнения: 1.8658950328827 секунд (25 запросов, 1.8423883914948 сек)
select count(*) from jos_jmovies where published=1; (0.0031259059906006) sec
select c.id,c.title,c.alias from jos_categories as c, jos_jmovies_categories as mc where mc.catid=c.id and c.section='com_jmovies' and c.published=1 group by c.id order by c.title; (0.011789083480835) sec
select m.id,m.titolo as name, CONCAT(SUBSTR(m.descrizione,1,200),'...') as descr, m.urlweblocal, m.video, m.urltrailer as dcurl, m.urlweb from jos_jmovies as m where published=1 order by rand() limit 1; (0.39255499839783) sec
select m.id,m.titolo as name,m.titolo2 as name_e, CONCAT(SUBSTR(m.descrizione,1,300),'...') as descr, m.nazione as country, m.regista as rejisser, m.anno as year, m.filename, m.video, m.audio, m.urlweblocal, m.counter, m.votes, m.votesum, m.attorealtri as actors, m.published, m.urltrailer as dcurl, m.urlweb as ftpurl from jos_jmovies as m left join jos_jmovies_categories as mc on m.id=mc.jmoviesid where (m.published=1) and publish_up<=NOW() group by m.id order by m.publish_up desc limit 0,20; (0.72129893302917) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43661; (0.67020106315613) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43677; (0.00031805038452148) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43676; (0.0002589225769043) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=1344; (0.00026106834411621) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=41597; (0.00028705596923828) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43334; (0.00028800964355469) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43258; (0.00029087066650391) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43225; (0.00026798248291016) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43335; (0.0003058910369873) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43675; (0.00027894973754883) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43674; (0.00027298927307129) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43673; (0.00026297569274902) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43672; (0.00031495094299316) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43671; (0.00027894973754883) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43670; (0.0003058910369873) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43669; (0.00028014183044434) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43594; (0.00026988983154297) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43606; (0.00025391578674316) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43668; (0.00027799606323242) sec
select DISTINCT(c.title) from jos_jmovies_categories as mc, jos_categories as c where c.id=mc.catid and mc.jmoviesid=43349; (0.00025486946105957) sec
select count(*) from jos_jmovies as m left join jos_jmovies_categories as mc on m.id=mc.jmoviesid where m.published=1 group by m.id; (0.038089036941528) sec
Здравствуйте, Calc, Вы писали:
C> на обычном железе арифметические операции, операции поиска в тексте, конкатенция и т.д. занимает 0.00x секунд на всю страницу при работе с mysql 0.0x если есть сортировка и временные таблицы, так же нужно учесть количество записей и бредовость запросов C> Пример с одного сайта. Там косяк с индексами, но не хватает квалификации для их перепеси.
Здравствуйте, kochetkov.vladimir, Вы писали:
k> AB>У... вижу. Мне бы такого security officer на opensvn... k> Для Avalon'а? Так я его и так тестировать буду (security@rsdn чуть подзабросил из-за нехватки времени, каюсь. Но планирую вернутся к нему в апреле, если что). Или ты про другие проекты?
Я про тот проект, на котором хостится avalon. Хотя, если исходить из того, что там должны хоститься только opensource проекты, то его взлом не должен быть страшен — там брать будет нечего.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, Sheridan, Вы писали:
S>>Приветствую, anton_t, вы писали:
a>>> Язык, который позволяет делать такие глупые (и главное неизбежные) ошибки — плохой язык. Хотя ты, конечно, можешь сказать, что любишь гулять по граблям S>>Да, плохой язык. Об этом все знают.
KV>А о каком языке все знают, что он хороший? (это чтобы тема не загнулась)
Ruby, Ruby!!!
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Calc, Вы писали:
C>> php_flag register_globals off
AB>Дык она же начиная с php 4.2 по умолчанию Off, и deprecated начиная с 5.3...
Код иногда достается по наследству, так же как и сервера
Здравствуйте, Calc, Вы писали:
C> AB>Дык она же начиная с php 4.2 по умолчанию Off, и deprecated начиная с 5.3... C> Код иногда достается по наследству, так же как и сервера
Ну так обсуждаемая задача не наследовалась, а писалась заново.
Здравствуйте, Calc, Вы писали:
C>Профессионалы, **** вашу мать...
Спасибо.
C>И читайте доки. PHP устойчив к "идиотским ошибкам", идиотские ошибки в нем не рушат работу всей системы
Спасибо еще раз.
C>и не забудьте xdebug поставить на сервер.
Да незачем уже. В скором времени, LAMP на этом сервере прекратит свое существование.
C>Не будете делать таких глупых ошибок.
Глупую ошибку я совершил ровно одну: поленился настраивать рерайтинг урлов, чтобы завернуть /banners на IIS и собирать банеры на нормальном языке. Уже исправился и, как только решится вопрос с графикой, банеры будет собирать код на Nemerle. Ибо, возможно это будет откровением, но есть языки, в которых "правильность и чистота написания кода" ложится на компилятор/интерпретатор настолько, что забываешь о том, что нужно что-то помнить, знать, держать в голове и т.п. Да бог с ним с Nemerle'ом, в том же Python'e такие грабли невозможны в принципе, безо всяких конфигураций, уровней ошибок, отладчиков и т.п.
А поводу "профессионалов"... Мне можно, т.к. я ни разу не программист, у меня несколько иная предметная область
. И в этой области как раз-таки программисты зачастую совершают такие ошибки, что становится страшно за будущее всей отрасли. Но при этом, я не вспоминаю их матерей, не называю идиотами, а стараюсь как можно более корректно сообщать им об их ошибках. Советую подумать над этим.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>А поводу "профессионалов"... Мне можно, т.к. я ни разу не программист, у меня несколько иная предметная область
. И в этой области как раз-таки программисты зачастую совершают такие ошибки, что становится страшно за будущее всей отрасли. Но при этом, я не вспоминаю их матерей, не называю идиотами, а стараюсь как можно более корректно сообщать им об их ошибках. Советую подумать над этим.
Советую задуматься над вашими *** в названии темы, после этого сделать выводы о стилистике поста
Здравствуйте, Sheridan, Вы писали:
k>> Еще обратил внимание (но не проверял) на недостаточный контроль данных из кук (style). Скорее всего, там тот же самый набор уязвимостей. S>Жду
$_COOKIE['style'] попадает в HTML без какой-либо предварительной обработки. По сути, это — перечисление, поэтому стоит проверять его значение на допустимые варианты, и, в случае, если оно содержит недопустимое, использовать default-стиль. В принципе, само по себе, оно не является серьезной уязвимостью, т.к. эксплуатировать его нереально. Однако, если (используя другую XSS на твоем сайте, например) атакующему удасться установить эту куку в что-то типа '>"><script>alert(0);</script> , то мы получим уже не отраженную XSS, а вполне себе активную, т.к. злонамеренный javascript будет исполняться каждый раз, когда жертва будет заходить на твой сайт, даже по нормальным ссылкам. Поэтому лучше это закрыть.
Начал прогонять сканером, но он, также как и я ничего больше не нашел. Пока
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, kochetkov.vladimir, вы писали:
k>> Да незачем уже. В скором времени, LAMP на этом сервере прекратит свое существование.
S>Неужели LAPP поднимешь?
Приветствую, kochetkov.vladimir, вы писали:
k> $_COOKIE['style'] попадает в HTML без.....м. Поэтому лучше это закрыть.
fixed
k> Начал прогонять сканером, но он, также как и я ничего больше не нашел. Пока
Вот и славно Cgfcb,j ,jkmijt ^)
Впрочем если что заметишь — свисти.
k> P.S: Зачем тебе 53-ий порт снаружи?
dns. Обслуживает зону sheridan-home.ru
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, Calc, Вы писали:
C>>Советую задуматься над вашими *** в названии темы, после этого сделать выводы о стилистике поста
KV>Это был пин-код моей кредитки. А вы что подумали?
А у меня номер паспорта родителей
Здравствуйте, kochetkov.vladimir, Вы писали:
k> Ух ты. Я, до сегодняшнего момента, как-то не догадывался, кто его владелец
Ну я как-то анонсировал его на RSDN, но особенного энтузиазма он не вызвал, а я и не настаивал — тогда сервер еще был в России и достаточно слабенький.
k> Глянул, по-диагонали. На первый взгляд — ок, явных дыр нету. На следующей неделе смогу глянуть не по-диагонали, если хочешь.
Да, был бы благодарен. Исходники, если потребуются, могу предоставить (надо будет зарегистрироваться на ресурсе и сообщить OpenID).