Топ 10 важнейших проблем безопасности.

Bermuda

Новичок
Топ 10 важнейших проблем безопасности.

Посадили меня проанализировать приложение на безопастность в соответствии с
OWASP Top Ten Project

Все вроде понятно и кое-какие дыры уже нашел.
Не совсем понятно насчет "A5 Buffer Overflow".
Как конечный разработчик (не администратор, не хостер) может внести эту опасность в программу, повлиять на нее.
Скажем так, ясно что проблема существует, но что я как разработчик могу с ней сделать?
 

Bermuda

Новичок
admin
Каким способом спровоцировать утечку памяти? Что я должен для этого сделать?
 

Jahont

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

Alexandre

PHPПенсионер
Каким способом спровоцировать утечку памяти?
Если это пхп, то использовать "кривые функции". Под кривыми функциями понимаются те, которые дают утечки памяти.
На вопрос, какие функции являются "кривые", я ответа не дам, но некоторые XML функции имеют утечки.
По окончании отработки скрипта не должно оставаться "занятой памяти".
утечки памяти можно определить (замерить) в консольном режиме используя valgrind-3.1.1.
 

Bermuda

Новичок
Alexandre
Ну хорошо, что я могу еще сделать, чтобы спровоцировать/предотвратить утечку памяти кроме как использовать/неиспользовать "бракованые" функции?
И вообще, как _алгоритм_ программирования на php может повлиять на утечку памяти?
 

Alexandre

PHPПенсионер
И вообще, как _алгоритм_ программирования на php может повлиять на утечку памяти?
В принципе нет, в PHP нет онлайнового сборщика мусора.
Но теоретически надо деинициализировать каждый объкт, т.е. перед выходом из класса, метода, скрипта, функции каждому уже не нужному объекту присвоить NULL.
 

crocodile2u

http://vbolshov.org.ru
не думаю, что это нужно (деинициализация объектов). ПХП сам убьет все, что сможет. вопрос, что делать с тем, что он не сможет убить. может быть, тони просветит?
 

hermit_refined

Отшельник
В принципе нет, в PHP нет онлайнового сборщика мусора.
что вы имеете в виду? память, выделенная под объект, освобождается при потере последней ссылки на него.
Но теоретически надо деинициализировать каждый объкт, т.е. перед выходом из класса, метода, скрипта, функции
ошибаетесь, лишний код ни к чему. например, при выходе из следующей функции память, отведённая под $a, автоматически высвобождается:
PHP:
function test()
{
    $a = new A();
    return true;
}
утечки памяти могут быть только при наличии циклических ссылок в массивах и объектах. ну и в xml-функциях, да.
 

Alexandre

PHPПенсионер
теоретически должно быть так.
function test()
{
$a = new A();
[.... code ....]
$a =null;
return true;
}
то же и отностится к Array()

память, выделенная под объект, освобождается при потере последней ссылки на него.
возможно, но не уверен, что все ссылки отслеживаются. Для большей надежности рекомендуется "утерять" ссылку на объект принудительно кодом $a =null;.
 

hermit_refined

Отшельник
Alexandre
так вот я и говорю, что вы ошибаетесь, $a = null; - здесь совершенно мусорный код, никак не влияющий на распределение памяти после выхода из функции test().
Для большей надежности рекомендуется "утерять" ссылку на объект принудительно.
можете сослаться на что-нибудь?
но не уверен, что все ссылки отслеживаются
см. исходники :)) все. это вытекает из самой внутренней структуры переменных и объектов.
 
Сверху