|
|
|
|
|
для: Bvz
(14.10.2010 в 09:00)
| | В Интернете об уязвимостях информации хоть отбавляй.
Не надо мне о чедесах рассказывать. Еще раз говорю - разберите внимательно код свой. Возврат не занимается уменьшением, записью и т.п., его задача только информировать. Учитесь понимать код.
Лучше проверять файлы по их заголовкам, хотя подделать можно все. Но такая проверка, а не проверка по трем буквам, все таки предпочтительнее, иначе вместо файла можно получить содержимое, смысл которого будет равен ровно тем трем буквам, кои часто пишут на заборах. | |
|
|
|
|
|
|
|
для: sim5
(14.10.2010 в 06:09)
| | >1. Если я благодаря тем или иным уязвимостям кода вашего, размещу у вас скрипт, а к хвостам безобидных и милых по виду картинок буду добавлять "его модули", то эти милые картинки превратятся в бомбы.
спасибо, а где почитать про такие уязвимости более подробно
>2. Какого массива?
спасибо, я имел ввиду массив $_FILES
>3. Вы уверены в этом?
да, вы не поверите, но убрав эту строку он не создает уменьшенную копию
и еще в догонку вопрос: 4 а как проверить расширение для других файлов не изображений? | |
|
|
|
|
|
|
|
для: Bvz
(13.10.2010 в 22:54)
| | 1. Если я благодаря тем или иным уязвимостям кода вашего, размещу у вас скрипт, а к хвостам безобидных и милых по виду картинок буду добавлять "его модули", то эти милые картинки превратятся в бомбы.
2. Какого массива? Массив массиву рознь, в одном это можно сделать просто, в другом только поэтапно, в третьем достаточно удалить пустые значения только у некоторых ключей.
Если речь идет о пустых элементах в массиве $_FILES, то во-первых надо хорошо знать, что содержит этот массив для каждого конкретного случая. Если необходимо удалить элементы у которых пустые поля ключа "name", то нужно удалять значения и других ключей, сопутствующие этому ключу . Сделать это можно пройдя циклом по массиву. Если же применять стандартные функции, то будут удалены элементы только этого ключа, остальные будут сохранены. Следовательно, чтобы удалить и другие незначащие элементы нужно задавать условия и для других ключей, значения у которых нужно тоже удалить. Для незагруженного файла с ключом "name" понятно, он пуст. Ключ "error" такого файла содержит код 4, и это задать в условии тоже не сложно, сложнее с ключом "size". Ключ "error" для загруженного файла содержит 0, но и ключ "size" для незагруженного файла содержит 0. То есть, если задать условие на удаление значений равных 0, как размер незагруженного файла, то будет удалено и нужное - информация об отсутствии ошибки у загруженных файлов. Следовательно, чтобы этого не произошло, при удалении значений массива, нужно проверять его ключ. Отсюда имеем:
<?
//исходный массив полей "file"
print_r($_FILES);
//удаляем незагруженные
array_walk($_FILES['file'], create_function('&$v,$k','$v = $k == "size" ? array_diff($v, array(0)) : array_diff($v, array("",4));'));
//результат
print_r($_FILES);
|
Удаление значений не изменяет индексы массивов ключей массива $_FILES. Следовательно, не всегда обязательно удалять все, а достаточно удалить только пустые значения ключа "name", если загрузка это большой массив, и этой загрузке сопутствует связанная с ним информация, а условием определено жестко - только И загрузка, И информация. Не стоит что-то делать лишнее, как то удаление пустого из массива, если это неоправдано.
3. Вы уверены в этом? Прежде чем такую чушь сморозить, вы хорошенько разберите каждую строку кода, и обратите внимание на то как вы вызываете функцию. | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 15:43)
| | вопросы по ходу прочтения темы еще раз:
1.
>Атака с помощью изображения без "помощника" практически не имеет перспективы,
что за "помощник"?
2.
Какой функцией удалять пустые значения из массива?
3.
без return true; функция не работает )) | |
|
|
|
|
|
|
|
для: Bvz
(12.10.2010 в 15:32)
| | Универсального ничего нет в том смысле, что без телодвижений все само собой. Вы в мануал загляните, прочтите о функции imagecreatefromjpeg(), что она делает, и может ли она открывать файлы любых типов? Изучайте и думайте. | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 15:24)
| | можете подсказать более универсальную функцию по созданию уменьшенной копии? | |
|
|
|
|
|
|
|
для: Bvz
(12.10.2010 в 14:44)
| | Желания должны быть у вас, а изучать то с чем будете сталкиваться - РНР, MySQL, HTML, как минимум. | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 14:22)
| | ок, еще пожелание будут, что почитать, изучить? | |
|
|
|
|
|
|
|
для: Bvz
(12.10.2010 в 14:16)
| | Зачем забиваете форум мусором - зачем вы копируете слова мои целеком? Я что склерозом старческим страдаю и слов своих не помню, мысли своей высказанной? Охота цитировать, значит цитируйте основное. | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 14:06)
| | >Если не знаете, а кто-то написал это не подумавши, то зачем копируете? Функции могут возвращать результат выполнения операции, чтобы вы после обращения к ней могли знать это. В данном случае возврат ни к чему не обязывающий, он в любом случае у вас возвращает true, даже если не будет выполнена операция уменьшения изображения по тем или иным причинам. Так какой тогда прок от нее? Вы либо выбросите это, либо сделайте так, чтобы от возврата была польза, тем более в этом вполне есть оправданная необходимость.
а зачем тогда авторы сего форума в своих книгах такие решения предлгают, блин выходит все потраченные деньги пошли на поддержания авторов, а не на профрост ((
>>разобрался как работать с файлами во временной папки спасибо, переношу в нужную папку с помощью rename, так?
>
все стало на места, спасибо!!!
>Говорил, чтобы вы всегда в голове держали всю задачу целиком, дабы знать чего требуется в общем, и в частностях на каждом ее этапе. Говорю, говорю, а все бес толку. Вот вы зачем проверяли допустимые типы файлов для загрузки? Вам это просто интересно было, или вы все-таки хотите загружать и GIF, и JPEG, и PNG? А если да, то чего это ваша функция уменьшает только JPEG, вы думаете, это универсально и она у вас откроет файл любого формата, типа сама догадается? Вы хотя бы разбирайте чужой код, читая о каждой ее функции, "мотая на ус" чего он там делает, а то копируете невесть что...
протупил, бездумно скопировал, (покраснел) | |
|
|
| |
|