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

Форум PHP

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

 

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

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

тема: Маленький вопрос, поключаемые файлы
 
 автор: magic   (08.09.2010 в 11:17)   письмо автору
 
 

Вот пришел в маленькое замешательство по поводу подключения файлов. На одном из авторитетных учебных сайтов, в частности для меня, адрес http://irbis-team.com/15/10/2, прочитал следуещее:-
Второе. Путь нужно указывать явно. Если считаем от корня сайта, то так: './path/file.php'; И хотя демократичный PHP прощает такие неточности, злоупотреблять не по-христиански.

Четвертое. Литеральные константы (в миру - строки) лучше обрамлять апострофами, а не кавычками. Ибо они быстрее и читабельнее.
..........
Не нужно лениться. Не нужно пользоваться short-тегами. Их вообще скоро выведут из употребления, так как они пересекаются с XML. Писать нужно только так: <?php
Ну и коль скоро зашла речь о них, то закрывающий значек в конце файла PHP ?> нельзя ставить ни в коем случае. Это не просто вредно, но и опасно.
Объясню, чтоб не быть голословным.
1. После него может оказаться пробел или перенос строки. А так, как файл подключен выше доктайпа, значит и пробел вылезет туда. А это гарантированно угробит верстку в IE.
2. Всё, что написано после него, интерпретируется как HTML. А это значит, что (не дай Бог) в конец файла попадет вирус, то он сработает.
А тупые боты именно туда норовят прописать всякую гадость. Так вот, ежели его (закрывающего значка) не будет, то вирь попадет в тело php и вызовет ошибку. Плохо конечно, но лучше, чем бы он сработал у клиента.

Теперь другие авторитетные источники, снова повторюсь для меня, таких авторов как Максима Кузнецова, Игоря Симдянова. Пишут так:-

include "connect.php";

и все включаемые файлы заканчивают закрывающим значком PHP "?>". И путь не от корня.
Для меня как для студента это стало камнем преткновения, тем более вопрос затрагивает безопасность, как говорится на сайте.
Можно еще что найти, но пока хотелось бы узнать мнение экспертов по этим вопросам, если можно по всем.

P.S. Если я конечно все не напутал.

  Ответить  
 
 автор: Trianon   (08.09.2010 в 11:21)   письмо автору
 
   для: magic   (08.09.2010 в 11:17)
 

у меня цитата в экран не лезет по горизонтали.
Вам не икается сейчас?

  Ответить  
 
 автор: magic   (08.09.2010 в 11:32)   письмо автору
 
   для: Trianon   (08.09.2010 в 11:21)
 

А я то и думаю чего икота напала на меня :)). Я видел, но честно сказать, не знаю как исправить. Простите меня грешнова.

  Ответить  
 
 автор: Trianon   (08.09.2010 в 11:55)   письмо автору
 
   для: magic   (08.09.2010 в 11:32)
 

Бог Модератор простит исправит. Если захочет.

  Ответить  
 
 автор: magic   (08.09.2010 в 12:01)   письмо автору
 
   для: Trianon   (08.09.2010 в 11:55)
 

Ну, а по поводу вопроса все таки, что скажите?

  Ответить  
 
 автор: Trianon   (08.09.2010 в 12:11)   письмо автору
 
   для: magic   (08.09.2010 в 12:01)
 

Что я с удовольствием послушаю представителей обеих упоминаемых сторон :)
Благо на форум они заходят.

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

  Ответить  
 
 автор: magic   (08.09.2010 в 12:25)   письмо автору
 
   для: Trianon   (08.09.2010 в 12:11)
 

Мне хотелось бы здесь услышать как надо. Я думаю, раз вопрос стоит о безопасности
(если верить источнику) - это по поводу закрывающего знака в подключаемом файле.
Тем более автор пишет о существенной дыре при таком использовании.

Объясню, чтоб не быть голословным. 
1. После него может оказаться пробел или перенос строки. А так, как файл подключен выше
 доктайпа, значит и пробел вылезет туда. А это гарантированно угробит верстку в IE.
2. Всё, что написано после него, интерпретируется как HTML. А это значит, что (не дай Бог) в 
конец файла попадет вирус, то он сработает.

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

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

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 12:36)   письмо автору
 
   для: magic   (08.09.2010 в 12:25)
 

>и все включаемые файлы заканчивают закрывающим значком PHP "?>".
Анекдот вспомнился...
Идет шахид, а в переди него жена. Его спрашивают - ты чего Коран нарушаешь? Жена всегда позади должна идти. А он - когда Коран писали - мин ещё не было.

  Ответить  
 
 автор: Valick   (08.09.2010 в 12:38)   письмо автору
 
   для: magic   (08.09.2010 в 12:25)
 

Так вот, ежели его (закрывающего значка) не будет, то вирь попадет в тело php и вызовет ошибку.
что мешает вирусу добавить себя с закрывающим РНР тегом?

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 12:42)   письмо автору
 
   для: Valick   (08.09.2010 в 12:38)
 

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

  Ответить  
 
 автор: magic   (08.09.2010 в 13:09)   письмо автору
 
   для: Valick   (08.09.2010 в 12:38)
 

Так с закрывающем тегом он тоже попадет только сработает как HTML и тогда якобы капец,
а вот если тега не будет он сработает как PHP и тогда вызовет просто ошибку, я так понял.
Получается что без тега (?>) более безопасно. Хотелось бы узнать так на самом деле?

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 13:12)   письмо автору
 
   для: magic   (08.09.2010 в 13:09)
 

Кто мешает попробовать?

  Ответить  
 
 автор: Valick   (08.09.2010 в 14:24)   письмо автору
 
   для: magic   (08.09.2010 в 13:09)
 

а вот если тега не будет он сработает как PHP
с какого хрена?
?>
я долбаный вирус, вот мое ХТМЛ тело
а в начале себя я добавил закрывающий тег ПХП
для особо одаренных админов, которые таким придурошным 
способом хотят от меня избавиться

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 14:34)   письмо автору
 
   для: Valick   (08.09.2010 в 14:24)
 

Часто такие долбаные вирусы попадаются? Я повторюсь - не встречал. Обычно такие:
я тупой вирус. Надеюсь на то
что прописываюсь в ХТМЛ тело,
потому что старательные кодеры самозабвенно 
закрывают файлы

Ну даже если и есть такие одаренные, остальные то не пролезут.

  Ответить  
 
 автор: Valick   (08.09.2010 в 14:43)   письмо автору
 
   для: Николай2357   (08.09.2010 в 14:34)
 

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

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 14:48)   письмо автору
 
   для: Valick   (08.09.2010 в 14:43)
 

Намек не ясен.
Почему рано? И зачем вообще напрягаться? Какая польза от него?
Кстати, стиль кодирования, принятый ZEND, недвусмысленно отзывается об этом значке
For files containing only PHP code, the closing tag must always be omitted 

И хоть я не поборник этого стиля, тут с ним полностью солидарен.
Зачем привыкать к плохому?

PS Это дыра, которую старательный кодер заткнуть не в состоянии. Пароли угоняются не у него. А вот хоть что то сделать в этом направлении может.

  Ответить  
 
 автор: Valick   (08.09.2010 в 15:13)   письмо автору
 
   для: Николай2357   (08.09.2010 в 14:48)
 

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

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 15:26)   письмо автору
 
   для: Valick   (08.09.2010 в 15:13)
 

А причем тут Zend и вирусы? Я ничего про это не говорил. Я говорил про рекомендации не ставить этот значек.
Не знаю, чем они руководствовались при разработке стиля, но не просто так же на этом акцентировались. Значит есть причины.

Я лично вижу две, и причем вполне достаточные, чтобы забыть об этом значке и не вспоминать никогда. Есть доводы в защиту?

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

По крайней мере уже несколько раз мне говорили спасибо за такую рекомендацию. Именно по этому поводу.

  Ответить  
 
 автор: Valick   (08.09.2010 в 15:43)   письмо автору
 
   для: Николай2357   (08.09.2010 в 15:26)
 

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

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 16:03)   письмо автору
 
   для: Valick   (08.09.2010 в 15:43)
 

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

  Ответить  
 
 автор: Valick   (08.09.2010 в 16:10)   письмо автору
 
   для: Николай2357   (08.09.2010 в 16:03)
 

гоните его... придут нормальные и сделают свое грязное дело :)

  Ответить  
 
 автор: .....   (08.09.2010 в 15:29)
 
   для: Николай2357   (08.09.2010 в 14:48)
 

это не стандарт кодирования, это стандарт кодирования в zend framework

framework.zend[.]com/manual/ru/coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.general

[.] == .

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 15:38)   письмо автору
 
   для: .....   (08.09.2010 в 15:29)
 

А я про что?
И вообще это не стандарт. Это рекомендуемый стиль.

  Ответить  
 
 автор: magic   (08.09.2010 в 17:23)   письмо автору
 
   для: Николай2357   (08.09.2010 в 15:38)
 

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

  Ответить  
 
 автор: Николай2357   (08.09.2010 в 18:38)   письмо автору
 
   для: magic   (08.09.2010 в 17:23)
 

Самая хорошая защита - отключить сервер от питания и закопать на 3-х метровую глубину. И то это не 100% вариант.
Конечно поломают, если оставлять лазейки.
Правда этот значек (вернее его отсутствие) не относится к средствам защиты. Так, мелкая профилактика.

  Ответить  
Rambler's Top100
вверх

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