php HTTP Referer
php HTTP Referer
kedze ide o HTTP metodu, je mi jasné že sa dá obísť. ale ja by som potreboval vedieť ako, konkrétny príklad.
dajme tomu ze mame a.php a potrebujeme sa dostat do b.php s tym, ze v b.php presmerujeme inde ak sme nedosli zo stranky a.php -
ja praveze chcem vymysliet co najucinejsi sposob ako toto osetrit, len na to musím vôbec vedieť ako sa to dá obísť.
nevedel by mi niekto poradiť? na nete som hladal, ale ono to chce asi aj blizsie specifikovať a tak.
dajme tomu ze mame a.php a potrebujeme sa dostat do b.php s tym, ze v b.php presmerujeme inde ak sme nedosli zo stranky a.php -
ja praveze chcem vymysliet co najucinejsi sposob ako toto osetrit, len na to musím vôbec vedieť ako sa to dá obísť.
nevedel by mi niekto poradiť? na nete som hladal, ale ono to chce asi aj blizsie specifikovať a tak.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
najjednoduchšie to obídeš tak, že si nainštaluješ nejaký addon do prehliadača. Ja mám napríklad RefControl vo firefoxe, kde si môžem nastaviť stránku ktorú má vždy posielať ako referera, prípadne blokovať referera a pod..
a ako to ošetriť: možno by si do session mohol ukladať poslednú stránku (toto ukladanie ale budeš musieť dať na všetky svoje podstránky) a danej stránke zkontrolovať nie referera z http hlavičky, ale toho svojho zo session
a ako to ošetriť: možno by si do session mohol ukladať poslednú stránku (toto ukladanie ale budeš musieť dať na všetky svoje podstránky) a danej stránke zkontrolovať nie referera z http hlavičky, ale toho svojho zo session
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
na localhost som to nikdy neskúšal, ale dajú sa definovať vlastné stránky. SKús (ak teda má ten istý refcontrol ako ja)
- Prílohy
-
- plocha.gif
- (90.62 KiB) 129 stiahnutí
Inak je to uz ok, spravil som to teda tak ze ziadny referer nakoniec netreba a fakci to:) takze dik.
ale inak na localhost sa to pouzit dá, skusal som.
//autoeditácia príspevku ( 25 Dec 2009, 13:25 )
ale stejne mal by som tento problém, ktorý už naozaj neviem riešiť.
ako som povedal mame tie 1.php a 2.php,
na subore 1.php je ajax kod ktory posle nahodne vygenerovane data do suboru 2.php, ten ich spracuje a zapíše do nejakého txt.
už som si aj ošetril v 2.php tie POST data ktore prisli aby boli v ramci v norme, tyhc ktore sa mozu vygenerovat. toto by pomohlo ale len vted keby si tam dotycny mohol hadzat hodnoty ake chce, to by bolo lahsie pre mna ale takto je to na nic...
lebo on má nieco taketo:
<form action="/data.php/" method=post>
<input type=hidden name=a value=400>
<input type=submit>
</form>
no a kedze je to nahodne, tak mi to prepíše na iný záznam proste...
a ja uz naozaj neviem ako sa voci tomuto obrániť. už som skusal rozne veci, HTTP referer nebude fungovať, skusal som aj tokeny no tie tu stracaju zmysel a ja si uz neviem rady.
ale inak na localhost sa to pouzit dá, skusal som.
//autoeditácia príspevku ( 25 Dec 2009, 13:25 )
ale stejne mal by som tento problém, ktorý už naozaj neviem riešiť.
ako som povedal mame tie 1.php a 2.php,
na subore 1.php je ajax kod ktory posle nahodne vygenerovane data do suboru 2.php, ten ich spracuje a zapíše do nejakého txt.
už som si aj ošetril v 2.php tie POST data ktore prisli aby boli v ramci v norme, tyhc ktore sa mozu vygenerovat. toto by pomohlo ale len vted keby si tam dotycny mohol hadzat hodnoty ake chce, to by bolo lahsie pre mna ale takto je to na nic...
lebo on má nieco taketo:
<form action="/data.php/" method=post>
<input type=hidden name=a value=400>
<input type=submit>
</form>
no a kedze je to nahodne, tak mi to prepíše na iný záznam proste...
a ja uz naozaj neviem ako sa voci tomuto obrániť. už som skusal rozne veci, HTTP referer nebude fungovať, skusal som aj tokeny no tie tu stracaju zmysel a ja si uz neviem rady.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
lenže ja to zapisujem v 2.php, teda určenie tych sessions by som musel opat tam, a tym padom to straca ucinnost.
už som aj uvazoval ze to dat do toho jedneho suboru teda 1.php ale je tam velke monzstvo dat ktore spracovavam takze to by som sa s toho zblaznil potom.
nemohol by si mi dat priklad na to? proste 1.php a 2.php a nejak tak to spravit jak tvrdíš, potom by som azda pochopil lepšie.
lebo už som s tohto problému na ktorom stojím už tyzden unavený.
už som aj uvazoval ze to dat do toho jedneho suboru teda 1.php ale je tam velke monzstvo dat ktore spracovavam takze to by som sa s toho zblaznil potom.
nemohol by si mi dat priklad na to? proste 1.php a 2.php a nejak tak to spravit jak tvrdíš, potom by som azda pochopil lepšie.
lebo už som s tohto problému na ktorom stojím už tyzden unavený.
Aj keď to budeš mať v jednom súbore, problém budeš mať úplne rovnaký.
Netuším, čo presne chceš robiť, takže neviem, ako to vyriešiť, každopádne nie je problém si to, čo máš v tom form ako skrytý prvok nie je problém dať do session (ale vhodné riešenie môže byť úplne iné, záleží to od toho, čo presne robíš).
Netuším, čo presne chceš robiť, takže neviem, ako to vyriešiť, každopádne nie je problém si to, čo máš v tom form ako skrytý prvok nie je problém dať do session (ale vhodné riešenie môže byť úplne iné, záleží to od toho, čo presne robíš).
čo sa týka použitia tokenov, dal som to takto:
1.php
2.php
Všetci mi radia tokeny...ale ja nechápem ich využitie v tomto smere, pretože napr. ked otvoríte vo Firebugu javascript časť kodu, tak vidíte ten vygenerovaný token a viete čo zadať do form actionu.
to by chcelo možno nejak tu adresu zamaskovať, ja neviem už...
tie dva kody tak stracaju účinnosť, kedze v tom čo robím nesmie byť refresh nemôžem tam nejak zvlásť posielať veci...a tak
1.php
Kód: Vybrať všetko
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<link rel="stylesheet" href="style.css">
</head>
<title>
</title>
<body>
<?php
session_start();
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;
echo "<input type='button' onclick='aktivuj_request();' value='Start Ajax' name='send'><br>";
echo "<span id='nieco'></span>";
?>
</body>
</html>
<script type="text/javascript">
var udaj = document.getElementById("nieco");
function aktivuj_request()
{
var xhr = new XMLHttpRequest();
xhr.open('POST','2.php?id=<?php echo $token ?>',true);
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4){
var vysledok = xhr.responseText;
udaj.innerHTML = vysledok;
}
}
if (xhr.overrideMimeType) xhr.setRequestHeader('Connection', 'close');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('a='+encodeURIComponent(udaj.innerHTML));
}
</script>Kód: Vybrať všetko
<?php
session_start();
if(empty($_POST)){
Header("Location: inde.php");
}
else{
if($_SESSION['token'] == $_GET['id']){
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;
$random_cars = array(
"Audi R8",
"Ford GT",
"Porsche Carrera GT",
"Lamborghini Gallardo",
"Ferrari Enzo"
);
$cislo = rand(0,4);
$subor = "subor.txt";
$fh = fopen($subor, 'w');
fwrite($fh, $random_cars[$cislo]);
fclose($fh);
echo $random_cars[$cislo];
}
}
?>
to by chcelo možno nejak tu adresu zamaskovať, ja neviem už...
tie dva kody tak stracaju účinnosť, kedze v tom čo robím nesmie byť refresh nemôžem tam nejak zvlásť posielať veci...a tak
no ano, ale co by si teda radil? zostať pri tých tokenoch, iné riešenie, alebo to celé nejak prepísať inak (ešte dobre povedať ako)?chrono napísal:A nie je jedno, či sa to odošle "normálne" cez formulár, alebo nejakou úpravou cez Firebug? (všetku činnosť robí server, takže v prehliadači sa to len zobrazí a iba raz po tom, ako sa zobrazí ten index, keďže potom už je ten token neplatný).
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Neviem, čo by som ti poradil, keďže stále netuším, čo presne chceš dosiahnuť (pretože v tom, čo si poslal tie tokeny budú stačiť a stačila by tam aj obyčajná session bez tokenov).LongShot napísal:no ano, ale co by si teda radil? zostať pri tých tokenoch, iné riešenie, alebo to celé nejak prepísať inak (ešte dobre povedať ako)?