Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pytanie o składnie poprawki, czysto edukacyjna prośba
fate
post
Post #1





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam (IMG:style_emoticons/default/businesssmiley.png) Mam cos takiego i działa chyba bez wad choc gdzies czytalem ze REFERER moze byc blokowany i nie wiem czy to przekierowanie jest ok:
AD1
  1. <?
  2. header ('Refresh: 3; URL='.$_SERVER['HTTP_REFERER']);
  3. ?>
  4.  
  5. <?
  6. echo 'Tlumaczenie w trakcie... strona dostępna wkrótce.<br />Za chwilę nastąpi przekierowanie...';
  7. ?>
  8. <? echo '<a href="'.$_SERVER['HTTP_REFERER'].'"> Powrót/Return </a>';?>

I miałem problem z własnoręcznym wykombinowaniem tego prostego kodu zw na skladnie ciagle mi cos nie dzialalo. Wytlumaczy mi ktos zwieźle dlaczego w linku po REFERER'] jest . ' a przy już header ma nie byc?!
Jestem nowicjuszem czytajac tutoriale nie wchodzi mi nic lepiej mi sie uczy czytajac i przerabiajac gotowe kody wiec prosilbym o konkretna odpowiedz zamiat zaganiania do nauki chyba ze naprawde lopatologiczny kurs krok po kroku:)

AD2
2 problem rowniez chyba składniowy mialem zeby wstawić w ten kod refresha, gdyby ktos mi mógł rozjaśnić czy się dało do tego 'location' wmontowac i jak?
  1. <?php
  2. function adres(){
  3. $dane=$_SERVER['HTTP_REFERER'];
  4. return $dane;
  5. }
  6.  
  7. header('Location:'.adres());
  8.  
  9. ?>


AD3
lub czy dalo sie jakos tak zeby nazwe tej funkcji wmontowac w ponizszy header bo tez nie umialem
  1. function adres(){
  2. $dane=$_SERVER['HTTP_REFERER'];
  3. return $dane;
  4. }
  5. header ('Refresh: 3; URL='.adres()']);


AD4
Ze sleepem byl problem ze nie wyswietlalo tekstu czy na poczatku go wrzucalem czy na koncu i czy header byl przed echo czy po tak jakby sleep opoznial tylko header.
Czy nalezalo cos kombinwac z ob_flush?
mam to dla indexu a zapomnialem ze ta strona sie w index nie includuje i uznalem ze to nie to a moze wlasnie to byloby roziazanie.

Bylbym wdzieczny za nauki.. niby działa ale nie lubie niedomówień i chciałbym wiedzieć i zapamietać (IMG:style_emoticons/default/nerdsmiley.png)
Pozdrawiam
KG

Ten post edytował fate 10.04.2012, 10:32:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


Najszybszą drogą do sukcesu jest podwojenie ilości błędów, które popełniasz. Thomas J. Watson
Niemniej jednak bez przeczytania jakiegoś kursu dla początkujących w PHP który by pokrywał podstawy programowania, nabawisz się wielu frustracji. Jak już się nauczysz podstaw w jednym języku to w dużej mierze pewne koncepcje się powtarzają. Możesz się też zapisać np. na kurs: http://www.udacity.com/overview/Course/cs101 i w siedem tygodni napisać swoją wyszukiwarkę podobną do google (z początków firmy), wykładowcą jest profesor z uniwersytetu w USA, albo o PHP http://devzone.zend.com/6/php-101-php-for-...olute-beginner/

ad.1

nie wiem czy dobrze cię rozumiem ale jeżeli masz tak:

  1. $var = 'asdf';
  2. echo 'blablabla asd' . $var;


to w echo masz dwa stringi które musisz dopiero połączyć w jeden (odpowiednio skleić)

możesz też robić coś takiego:

  1. echo "This is $great";


itd. http://www.php.net/manual/en/language.type...parsing.complex

odnośnie jeszcze samego pisania kodu z PHP z HTML to lepiej robić to tak:

  1. <div class="user_controls">
  2. <?php if ($user = Current_User::user()): ?>
  3. Hello, <em><?php echo $user->username; ?></em> <br/>
  4. <?php echo anchor('logout', 'Logout'); ?>
  5. <?php else: ?>
  6. <?php echo anchor('login','Login'); ?> |
  7. <?php echo anchor('signup', 'Register'); ?>
  8. <?php endif; ?>
  9. </div>
  10.  
  11. <h1>My Message Board</h1>
  12.  
  13. <?php foreach($categories as $category): ?>
  14.  
  15. <div class="category">
  16.  
  17. <h2><?php echo $category->title; ?></h2>
  18.  
  19. <?php foreach($category->Forums as $forum): ?>
  20.  
  21. <div class="forum">
  22.  
  23. <h3>
  24. <?php echo anchor('forums/'.$forum->id, $forum->title) ?>
  25. (<?php echo $forum->Threads->count(); ?> threads)
  26. </h3>
  27.  
  28. <div class="description">
  29. <?php echo $forum->description; ?>
  30. </div>
  31.  
  32. </div>
  33.  
  34. <?php endforeach; ?>
  35.  
  36. </div>
  37.  
  38. <?php endforeach; ?>


Inne podobne porady:
http://net.tutsplus.com/tutorials/html-css...-readable-code/

4. Tak chodzi mi o flush, antiviry to trochę uproszczenie, raczej programy do kompleksowego zabezpieczania komputera. One na to nie pozwalają bo zanim pokażą użytkownikowi stronę muszą ją w pełni sprawdzić, a nie tylko częściowo.


Odnośnie referer'a to zawsze musisz założyć że może być pusty (musisz zdecydować co wtedy chcesz zrobić) lub zafałszowany (musisz go sprawdzić, zresztą żadnej danej otrzymanej od użytkownika ufać nie możesz, zawsze musisz sprawdzać i zabezpieczać).

Jednym ze sposobów jest np. ograniczenie działania do jakichś domen np. poprzez użycie parse_url

ważną sprawę jest by nie sprawdzać czy zmienna HTTP_REFERER jedynie zawiera nazwę domeny bo można to ominąć np. tak dla domeny "domena.pl"

domena.pl.jestem-hakerem.pl/ukradne_ci_orzeszki.html

proste sprawdzanie tego nie wyłapie

należy robić to tak:

  1. <?
  2.  
  3. $_SERVER['HTTP_REFERER'] = 'http://forum.php.pl/Przedszkole_f27.html'; // Nie powinno sie zmieniac tak zmiennych systemowych w normalnym kodzie
  4. //$_SERVER['HTTP_REFERER'] = 'http://forum.php.pl.hacker.com/Przedszkole_f27.html';
  5. //$_SERVER['HTTP_REFERER'] = 'http://hacker.com/forum.php.pl.html';
  6.  
  7. if ($_SERVER['HTTP_REFERER'] != '') {
  8. $host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
  9.  
  10. if ('forum.php.pl' == $host) {
  11. echo "ok";
  12. } else {
  13. echo 'not ok';
  14. }
  15. }
  16. ?>


Możesz jeszcze przeczytać:
http://net.tutsplus.com/tutorials/php/30-p...-for-beginners/
https://www.owasp.org/index.php/Cheat_Sheets
http://www.udacity.com/overview/Course/cs101
http://devzone.zend.com/6/php-101-php-for-...olute-beginner/

+++ http://www.zend.com/en/download/487 (możesz się zainteresować działem secuirty, pozatym jest to ogólny przegląd różnych umiejętności programisty, trzeba się zarejestrować by pobrać)

Ten post edytował jaslanin 11.04.2012, 19:58:36
Go to the top of the page
+Quote Post
greycoffey
post
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Cytat(jaslanin @ 11.04.2012, 20:51:05 ) *
Odnośnie referer'a to zawsze musisz założyć że może być pusty (musisz zdecydować co wtedy chcesz zrobić) lub zafałszowany (musisz go sprawdzić, zresztą żadnej danej otrzymanej od użytkownika ufać nie możesz, zawsze musisz sprawdzać i zabezpieczać).

Jednym ze sposobów jest np. ograniczenie działania do jakichś domen np. poprzez użycie parse_url

ważną sprawę jest by nie sprawdzać czy zmienna HTTP_REFERER jedynie zawiera nazwę domeny bo można to ominąć np. tak dla domeny "domena.pl"

domena.pl.jestem-hakerem.pl/ukradne_ci_orzeszki.html

proste sprawdzanie tego nie wyłapie

należy robić to tak:

  1. <?
  2.  
  3. $_SERVER['HTTP_REFERER'] = 'http://forum.php.pl/Przedszkole_f27.html'; // Nie powinno sie zmieniac tak zmiennych systemowych w normalnym kodzie
  4. //$_SERVER['HTTP_REFERER'] = 'http://forum.php.pl.hacker.com/Przedszkole_f27.html';
  5. //$_SERVER['HTTP_REFERER'] = 'http://hacker.com/forum.php.pl.html';
  6.  
  7. if ($_SERVER['HTTP_REFERER'] != '') {
  8. $host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
  9.  
  10. if ('forum.php.pl' == $host) {
  11. echo "ok";
  12. } else {
  13. echo 'not ok';
  14. }
  15. }
  16. ?>


Skąd takie przeczulenie dotyczące danych przesyłanych przez użytkownika? W tym celu to nie ma sensu. To się dzieje, jedynie gdy ktoś sam majstruje przy refererze - jak atakujący miałby ustawić ofierze referera? Preparacja żądania AJAXowego nic nie da przeca, a jak ktoś wejdzie tam z innego linku, przekieruje go spowrotem (IMG:style_emoticons/default/wink.gif) Nawet nie można tego wykorzystać do maskowania podejrzanych urli, jak na pewnym znanym protalu społecznościowym można było wywołać http://example.com/redirect?url=http://zuo...and_destroy.zuo.
Fajnie, że zwrcasz uwagę na bezpieczeństwo, ale też dobrze czasami iwedzieć, gdzie używać zabezpieczeń i jakich, a gdzie wcale (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 13:40