Титла: функция с която да прихващам заявката на "противникови" браузер Публикувано от: a_panov в May 15, 2009, 17:24 Аз си пиша сайтовете сам и затова са смотани, нямат функционалности и не могат да ги сринат отвънка... Както и да е и аз се нуждая от помощ!!!
Помощ... Имам сайт на РНР и от цялото дърво от файлове е: основна дир/дир 1/дир 2 та основните изпълними файлове за строежа на интерфейса са в "основна дир", но някой умник като вземе да достъпва РНР файловете от "дир 1" и "дир 2" сървърните логове ми се пълнят с грешки че не моге да се инклудват файлове!!! Това е така защото относителния път е от "основна дир". Та трябва ми функция с която да прихващам заявката на "противникови" браузер към моя сървър и да я чеквам! Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: neter в May 15, 2009, 18:07 Можеш да изключиш записването на определени записи в логовете с функцията SetEnvIf на Apache. Пример
Цитат SetEnvIf Request_URI "http://домейн.com/дир1(.*)" dontlog Иначе, PHP си има предварително зададена променлива за адреса, който е подаден от потребителя Цитат $_SERVER["REQUEST_URI"] Използвай я смело. А какви са останалите предварително зададени променливи, можеш да провериш в phpinfo ;) Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: victim70 в May 15, 2009, 21:44 Не е добре написано щом позволява да има грешки.
Но това че търсиш помощ е добре - защото разбираш че не е добре. Сега по темата: 1. Работи със сесии. В тях много лесно се помни инфо на потребителя и се използват когато е необходимо. Ако не ползваш - имаше номер да забраниш бутона за назад (back). 2. Във всяка директория си сложи по един файл index.php който да редиректва към желаната локация. Ето и пример: Код: <?php Това ще помогне и при редизаин на страницата защото може да се извърши дизайна от професионален дизайнер който си няма и хабер от програмиране само ще ти сложи реперите в полетата за заместване. 4. На едно място бях направил грешките да се показват само на определени IP-та но не си спомням магията а не ми се чете в момента. 5. Инклудвай файлове само от една локация примерно /var/www/html/include достъп от друга директория примерно: /var/www/html/dir1/drundrun.php код за включване Код: <?php Заявката от "вражеският браузер" неможеш да я чекваш защото неможеш да разбереш без сесия от къде идва (дали е нормално или инжектирано извикване). иначе ползвай в такъв случай try/catch структура за случаите на вариянт еб.. сие м..та http://bg.php.net/manual/bg/language.exceptions.php ($2) И не забравяй най-важното нещо за потребителски интерфейси ВИНАГИ ПРОВЕРЯВАЙ ПОТРЕБИТЕЛСКИЯТ ВХОД ТОЙ ВИНАГИ :-) Е ГРЕШЕН АКО НЕ Е ПРОВЕРЕН При мене се е получавало че имам 20-30 реда проверка и 10 реда същински код :-) Надявам се че не съм те омоткал съвсем Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: VladSun в May 16, 2009, 09:46 Просто сложи всички директории и файлове, които са само за include извън web root директорията. Така няма да бъдат директно достъпни :)
По отношение на template системите - лично аз ги ненавиждам :) Идеята за "език в езика" не ми се нрави, но това е друга тема... Моят съвет е да прочетеш за MVC принципите: http://en.wikipedia.org/wiki/Model-view-controller ($2) Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: gat3way в May 17, 2009, 14:01 Има нещо криво в цялата работа :) Как така злият потребител разбира въобще за съществуването на dir1 и dir2??? Нали скриптовете оттам се include-ват, не би трябвало никъде в изплютия HTML да се догатва въобще че съществуват въпросните директории?
После - това че сам си ги пишеш не означава, че идиоти не могат да ти ги счупят. Достатъчно е единствено потребителят да има контрол върху част от стринг-а, който ползваш в include()/require() - в доста случаи това може да се ескалира доволно лесно до изпълнение на код върху твоят сървър. Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: victim70 в May 18, 2009, 20:47 Има нещо криво в цялата работа :) Как така злият потребител разбира въобще за съществуването на dir1 и dir2??? Нали скриптовете оттам се include-ват, не би трябвало никъде в изплютия HTML да се догатва въобще че съществуват въпросните директории? Абсолютно съгласен. Усещах че има 'гнилоч' ама не усещах от къде. Как ли разбира гадняра за скритите директории :o . За изпълнението на код става и по погрешка не само от разбирачи. Една естественно руса шматка с копи/пейст така ми омаза апликацията без да иска че не е истина. От този момент входа на злият потребител го проверявам яко. Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: a_panov в Jun 20, 2009, 15:16 да да да да... :'(
Имам в главната index.php който строи целия сайт и си вика различни файлове от различни поддиректории. Обаче в поддиректорията /news/today_news.php и /news/yesterday_news.php се извикват от индекса в главната. Отделно от това те правят неща от "погледа на главната директория" включване на ленгуидж файлове, заявки към база данни. Така и ако тези файлове по някакъв начи бъдат достъпвани не като index.php/?page=news/today_news.php а директно е извикан като today_news.php лога на апача естествено ще се напълни с грешки. Горните работи са примерни. Та да не се постъпват директно поддиректориите под главната, или по точно те си се достъпват но съм забранил достъпването на php файлове с .htaccess по този начин: Код: <FilesMatch "\.php$"> и така апача ги заплюва с грешка 404 Not Found която може да я прихванете с .htaccess-а в главната директория. При желание мога да ви архивирам кода и да ви го пратя. Днес открих груба логическа грешка в index.php която е при обработката на изключения но сега няма да се опитвам да я поправям а ще легна да почета книга и да поспя. Лек ден на всички! Титла: Re: функция с която да прихващам заявката на "противникови" браузер Публикувано от: Lucifer в Jun 20, 2009, 15:36 Я чакай ... викащ го с index.php/?page=news/today_news.php ???????????
Аз ли не схващам идеята или ти наистина викаш целия филе? Я му дай include()/require() и си викай функцийте от него ... не че и аз не съм правил такива неща (и не ги правя) но по принцип PHP файла винаги се вика с някаква променлива ... иначе връща празно ... |