Последние комментарии
Для меня эта страница - это удобный способ смотреть, что нового происходит в комментариях и сразу находить заметку, не заходя в админку. Думаю, она будет полезна и тебе.
Михаил Фленов
Поправил опечатку, там должно было быть слово "письмо"
Андрей Ше
Михаил, привет.
Можешь поправить начало этой статьи, может опечатка или часть текста пропала.
"Недавно получил само с вопросом о том, зачем нужны интерфейсы..."
Михаил Фленов
В моём комментарии нужно было поставить вопрос. Мурыч что-то писал и мне казалось, что это You don’t know JavaScript, хотя может я тут не прав
Игорь Олегович
Нет, Embarcadero развивает проект.
Кот
"You don’t know JavaScript - это как раз книга, которая написана Мурычем." - Вроде бы Кайлом Симпсоном, или я не понял "шутки юмора".
@вовчик Спасибо, но вопрос был риторическим.
На самом деле примитивы в JS сущесвуют только потому, что создателя JS попросили сделать как в Java, о чем он сам говорит в интервью, ну и в твиттере часто пишет. А так всё только путается, так как в других языках - примитивы передаются по значению например, а в JS нет (точнее зависит от реализации, но ребята из V8 что у них по ссылке)
Михаил Фленов
You don’t know JavaScript - это как раз книга, которая написана Мурычем.
вовчик
"но тогда возникает вопрос почему у "примитивовов" есть методы типа tostring? :)" потому что в js есть такая штука как автобоксинг, которая оборачивает примитив в обертку чтобы вызвать у них методы, а после убирает обертку
Кот
самая большая проблема языка в том что по нему нет официальных доков, есть только эта спецификация, что не есть дока по языку. Конечно если интересно как это все под капотом работает, интересно почитать. А так как официальных доков нет, то можно интерпретировать как угодно:) Смотря что считать примитивом, по спецификации на ECMA нет такого деления, с точки зрения понимания, можно условно разделить на объект и все остальное (функция и массив тож объект), но тогда возникает вопрос почему у "примитивовов" есть методы типа tostring? :)
Хорошая серия книжек You don’t know JavaScript.
IDDQD
Ха! Я тоже решил проверить ее профайл когда увидел анонс конференции. Еще подумал надо же стаф инженер в убере - молодец, есть у чему стремиться. А тут такое )
toorr2p
Здравствуйте, вопросы по главе "5,1 Загрузка файлов на сервер"
1) Почему нет проверки $_SERVER['HTTP_REFERER']?
Ведь могут же сканером проходить по сайту, отыскивая формы с INPUT type="file" и грузить туда свои зловреды.
2) Также не понял, как защитится к примеру от загрузке шелла, под видом картинки GIF, описанной в этой статье "CTF-соревнование: взлом ch4inrulz (1.0.1)" на securitylab ru ? Я проверил, действительно все описанные проверки в главе не предотвращают от загрузки такого файла (shell.gif) с содержимым:
GIF98
<?php
echo $_SERVER["DOCUMENT_ROOT"];
?>
Код с проверками (из листинга главы)
<?php
$uplDstDir = $_SERVER['DOCUMENT_ROOT'] . '/upload';
$uplFileName = md5(microtime());
//Check file size
if(!$_FILES['file1']['size'])
die("Error fail upload file!");
//Check file max size
if($_FILES['file1']['size']>300*1024)
die("Error file size is larger 100kb!");
//If it’s a picture, check its width and height
$arrSize = getimagesize($_FILES['file1']['tmp_name']);
if(!$arrSize[0] || !$arrSize[1])
die("Error image dimensions must not be zero!");
//Check file type
preg_match("'([a-z]+)\/[x\-]*([a-z]+)'", $_FILES['file1']['type'], $ext);
if(!in_array($ext[2], array('jpg', 'jpeg', 'gif', 'png')))
die("Error file format not allowed!");
//Moving a file from a temporary directory to a permanent one
$uplFileName = "$uplDstDir/$uplFileName.$ext[2]";
if(!move_uploaded_file($_FILES['file1']['tmp_name'], $uplFileName))
die("Error file not upload!");
?>
Просьба подсказать как с этим бороться.