![]() |
Цитата:
Цитата:
PHP код:
|
Судя по тому, что я видел, переменная $id нигде у вас не проверяется на валидность... Настоятельно рекомендую сделать проверку на alphanumerical (функция ctype_alnum($id) возвращает TRUE если буквы/цифры, FALSE - в противном случае) и отсечь все лишнее ПЕРЕД тем как делать include/require! Иначе можно много нехороших вещей сделать, например прочитать любой (с некоторыми условиями) файл.
|
Почему используется $id. Когда страницы открываются прописываеш ?id=service
|
Raman, конечно чисто теоретически, очень абстрактно, это может быть некоторой уязвимостью, но если учесть что данная переменная является частью пути, которая никак не обрабатывается, а просто подставляется к константным частям, то ничего кроме того что итак там есть и предоставлено для просмотра получить таким образом не удастся.
|
Я не спрашивал почему используется $id, хоть $page, хоть что угодно.
Но если будет, например, "?id=../index.php" то index.php свой код и покажет... Это в случае отсутствия проверки. А если копнуть глубже?.. (типа etc/passwd и т.д.) |
Цитата:
$id = '../index.php'; $file = '_text/'.$id.'.txt.php'; По твоему теперь $file содержит путь на самого себя???? Помоему так на index.txt.php которого нету, поскольку все подобные файлы лежат в /_text/ !!!!!!!!!! Я НЕ спорил сразу что чисто теоретически это потенциальная дырка, но не особенно уж страшная, как я подчеркивал, в свете дописывания постоянных частей в пути. |
Извиняюсь за пример c index.php... Но важность дыры от этого не меняется.
Во-первых, кто даст гарантию на то, что на сервере больше нет txt.php файлов? Во-вторых, человек может захотеть использовать аналогичные расширения для include файлов - и это частое явление - а если их взять и просмотреть? Понятно, что "хакеру" придется брутфорсить имена, но по словарю с правилами это не так сложно и не так долго. Да и сам владелец сайта может неявно помочь. В-третьих, если человек, не дай бог, сделает fixed part как .php или .txt ? Надо культуру программирования прививать смолоду - а из таких "мелочей" складываются дырявые продукты. И масштаб здесь не важен. Ничего личного! Просто хочется чтобы человек осознал что пара строчек кода может застраховать от некоторых неожиданностей. И легче их добавить. |
Я смотрю затронул болезненый вопрос.
Тогда подскажите как, куда и какую защиту я должен поставить в файлах index.php phones.text.php и остальных. чтобы не взломали сайт? Хоть и у меня обычный сайт. там нечего и смотреть то. Но все же. |
В index.php достаточно явно задать $id и сделать базовую проверку на ctype_alpnum:
Код:
$id=$_GET[id]; И взять за правило не размешать в директории _text файлов с расширением txt.php, чтение которых нежелательно. |
Спасибо. Но у меня файлы в _text только те которые должны считать, больше ничего нет.
Да и я упростил сайт оставил в index.php только два includes_once В начале и в конце с сылкой на файл с мета тэгами и внизу на рекламу и все. |
А скажите, как понять вот это добавление к index.php:
index.s.php?id=articles&loc=press_other/pts_gro.php? Если ясно, что id= относится к коду которое разбирали верху, а дальше куда идет сылка? |
Цитата:
|
Не я обрабатываю это, а у знакомого видел на его сайте Вот и спросил. Он мне дал коды с id=
|
Дак у него и нужно спросить что унего этот параметр значит! Ведь можно сколько угодно каких надо сделать!
|
Спасибо за инфу
|
Не нехочет сказать что за код обрабатывает это index.s.php?id=articles&loc=press_other/pts_gro.php. А мне очень нужно это чтобы файлы помещать по папкам а не в одну, чтобы потом не искать в куче.
Чтобы разные названия папок можно было делать. Помогите пожалуйста? |
Цитата:
Цитата:
|
Я и создаю директорию press_other в директории _txt и помещаю туда файл. Ставлю сылку в файле articles.txt.php index.s.php?id=articles&loc=press_other/pts_gro.php. Но все равно ответ как будто нет такой директорнии и файла. Остается та же страница
Оказывается там другой php код обрабатывает этото сценарий. |
Мне не понятен код который обрабатывал как выше код index.s.php?id=articles И в добавок так что в корневой есть папка articles с папкой с файлом press_other/pts_gro.php. Вот и получается обращение index.s.php?id=articles&loc=press_other/pts_gro.php
И сколько id=*** столько и папок и в ней папок |
Цитата:
|
Слушай, нак, у тебя же следующий код обрабатывает все
PHP код:
Только сразу предостерегаю - не вздумай просто передавать параметром путь к файлу для включения напрямую - это даже в случае кучи проверок очень небезопастно - так делать НЕ надо. То на что ты пытаешься равняться - неверно. |
А как дописать код, чтобы обрабатывал $loc для захода в папки с файлами?
|
Цитата:
Вообще не советую так делать. |
Мне из файла нужно определять путь к директории. С базой я пока не научился пользоваться.
|
Цитата:
Цитата:
Цитата:
это в конфиг куда-то: Код:
$pathsDirs = array( PHP код:
|
Спасибо за код. У меня другой код работает, но и этот пойдет тоже.
И еще у меня другой вопрос: Как мне написать код чтобы нижний файл с баннерами загружался с опозданием, после загрузки основной страницы не сылаясь на этот файл и торможение страницы. |
Цитата:
|
А как это написать, чтобы работало?
|
Цитата:
|
Помогите мне доделать файл регистрации. Создал код заполнения формы по логину паролю и имя\отчество. Создал базу для прописки юзера.
Файл регистрации работает при отправке зарегистрированого пользователя в базу нормально. Все добавляется без проблем. Потом решил добавить функцию проверки на свободность имя пользователя, чтобы если есть пользователь с таким именем то выдаст ошибку что есть такой пользователь и вернется обратно в форму. Вот на этом у меня заминка не могу нормально написать проверку. Помогите мне разобраться в этом. Код формы регистрации с обработкой: PHP код:
PHP код:
|
пишеш SELECT COUNT id AS number WHERE `login`='tvoj_login'
потом просто выполняеш и проверяеш. Если результат 0 - такого нет; если 1 - такой есть. Дальше пишеш сообщение ошибки или соответственно добавляеш и пишеш "всё добавилось" |
Спасибо решил проблемку. Все проверяет и работает, но осталась другая проблема, чтобы уже авторизованым меня не выкидывало с авторизации и не повторяться в авторизации. А то хожу по страницам и меня выкидывает и приходится повторно авторизовываться. Вот код авторизации повторяю:
PHP код:
|
Цитата:
Используй сессии. добавлено через 1 минуту Цитата:
|
1. В самом начале КАЖДОЙ страницы вызываешь ф-цию
Код:
session_start(); 2. После проверки логина и пароля установи переменную сессии (имя переменной _access__ и ее содержимое может быть произвольным): Код:
$_SESSION["_access__"] = "On"; 3. Теперь тебе достаточно проверить переменную сессии для того, что бы определить авторизован ли уже этот пользователь: Код:
if(isset($_SESSION["_access__"])) 4. И последнее. При выходе пользователя должен выполнится следующий скрипт: Код:
if(isset($_SESSION["_access__"])) unset($_SESSION["_access__"]); Цитата:
|
Цитата:
Спасибо попробую |
Цитата:
PHP код:
|
То, что у тебя session_start() вызывает ошибку более чем странно. Покопайся в настройках. Я даю тебе проверенный тестовый пример авторизации с использованием session и cookies. Просто создай файлы с указанными именами и содержимым. Посмотри будет ли он работать на твоем хостинге.
Файл №1: index.php PHP код:
PHP код:
Файл №3: auth.html PHP код:
Файл №4: auth.php PHP код:
Файл №5: logout.php PHP код:
|
Цитата:
|
2 EvroStandart
Проверял. Передавать нельзя тело документа (документация PHP: you must call session_start() before anything is outputted to the browser.), а в указанном тобой фрагменте Код HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2 нак Насчет ошибки при вызове session_start(). Какой у тебя PHP? В документации нашел следующее примечание: As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored. |
У меня и выдает ошибку в шаблонах где до сессии написано всего, а где сначала ссесия открывается и дальше все нормально работает без ошибок
|
Часовой пояс GMT +4, время: 10:39. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.