DavidBMedlem sedan jan. 20001 372 inlägg hur gör man för att det endast skall gå att skicka ett formulär, det skall vara något liknande det nedan fast i PHP.
<%
If NOT Request.ServerVariables("HTTP_REFERER") = "http://www.minsida.com/" Then
Response.Redirect("http://www.enannansida.com/")
Else
'skriver koden här
End If
%>
------------------
// David - Probably the best guy in the world
plundinMedlem sedan apr. 200158 inlägg Finns ett annat inlägg bara nån dag gammalt som visar hur man gör.
Du bör nog dock vara försiktig med att
använda HTTP_REFERER, du kan inte vara
säker på att den är satt.
Om personen som använder formuläret
har ett program som till exempel
Norton Personal Firewall som blockerar
HTTP_REFERER så buggar formuläret ut eller hur ?
/plundin
DavidBMedlem sedan jan. 20001 372 inlägg finns det inget annat sätt och göra detta på då?
jag kan ändra på sidan som formuläret skickas ifrån, kan även gör om det till en php-fil om det behövs
------------------
// David - Probably the best guy in the world
plundinMedlem sedan apr. 200158 inlägg Det kan bli trixigt om du vill begränsa
formuläret på det sättet.
Jag antar att du bara vill se till att
ingen använder formuläret från en annan
sajt ? Isåfall skulle du kunna spara ett
värde i ett hidden fält, till exempel
sessions id ( helst krypterat ) och sedan jämföra sessions id i scriptet
som hanterar formuläret.
Detta skulle garantera att personen
åtminstone kommer från samma server
när han använder formuläret.
Annars kan du helt enkelt använda referer metoden men skriva att vissa firewall program kan eventuellt störa fuktionen av formuläret och att du
rekommenderar att de stänger av programmet om problem skulle uppstå.
/plundin
DavidBMedlem sedan jan. 20001 372 inlägg eftersom ingen annan har tillgång till servern så låter det där med hidden fält bra, men eftersom jag knappt har nån kunskap om PHP alls så skulle jag behöva lite hjälp.
------------------
// David - Probably the best guy in the world
plundinMedlem sedan apr. 200158 inlägg Tyvärr är jag ingen PHP expert jag heller, jag använder mest ASP.
Session id får man med session_id()
eller SID
Kanske någon annan kan ge ett detaljerat exempel i PHP.
/plundin
DavidBMedlem sedan jan. 20001 372 inlägg nån annan som kan hjälpa mig?
------------------
// David - Probably the best guy in the world
SPiNMedlem sedan mars 20007 896 inlägg Något liknande kanske?
:: formularSida.php ::
---
<?php
session_start();
?>
<form action="taemotSida.php" method="POST">
<input type="hidden" name="sessionIDet" value="<?php echo md5(session_id()); ?>">
<input type="submit" value="Kolla">
</form>
---
:: taemotSida.php ::
---
<?php
session_start();
if(md5(session_id()) == $sessionIDet)
echo "Access!";
else
echo "Access denied...";
?>
Kanske något sådant som behövs?
------------------
SPiN, bjorne.w@telia.com
-- Fame is a bitch, man [Brad Pitt - Fight Club] --
plundinMedlem sedan apr. 200158 inlägg Det går ju att lura denna metod så den
var kanske inte så bra.
Å andra sidan går det att lura referer
metoden ochså.
Det finns nog inget idiot säkert sätt
att göra detta på.
/plundin
DavidBMedlem sedan jan. 20001 372 inlägg får väl köra ovanstående metho och byta namn på sidan som tar emot formuläret med jämna mellanrum
------------------
// David - Probably the best guy in the world
SPiNMedlem sedan mars 20007 896 inlägg Sessions går väl inte att lura? :q
Hur menar du? *Tycker att det borde gå att lösa* ;)
------------------
SPiN, bjorne.w@telia.com
-- Fame is a bitch, man [Brad Pitt - Fight Club] --
plundinMedlem sedan apr. 200158 inlägg Jag testade följande:
Om du först går till formulär sidan
får du ju ett session id, om du nu
sparar sidan ( komplett med hidden fältet ) håller browsern uppe och sedan
dubbel klickar på den sparade sidan och
skickar formuläret så har du ju fortfarande samma sessions id eftersom ett browser fönster är uppe.
Jag testade detta på min lokala server
och det funkade, möjligtvis är mina
säkerhets inställningar ändrade för
localhost, man tycker annars att ett
nytt browser fönster borde generera
ett nytt sessions id på servern.
Måste säga att jag blev lite förvånad,
detta var IE 5.5 jag testade med.
Kanske en kombination av metoderna vore
bäst ? Om referer är blockerad ( dvs inte satt ) så kolla hidden fältet.
/plundin
DavidBMedlem sedan jan. 20001 372 inlägg okej, hur gör man då detta med http_reffer i PHP?
------------------
// David - Probably the best guy in the world
plundinMedlem sedan apr. 200158 inlägg http://cgi.webforum.nu/wf/Forum12/HTML/001102.html
Förresten, SPiN ska man verkligen ha
session_start() både i formuläret
och i formulär hanteraren ?
Ändras inte sessions_id() då ?
Som sagt, jag är ingen PHP expert, jag
kanske ska hålla mig ifrån PHP gruppen
och hålla mig till ASP och Java :)
/plundin
SPiNMedlem sedan mars 20007 896 inlägg Njee den ska va med på alla sidor som använder sessions :)
Vet dock inte om den ändrar session_id() men det bör den inte göra... Det skulle betyda att den lagrar en ny session ju, vilket den inte gör.
Är inte säker på att den inte ändrar, men jag tror inte det :)
------------------
SPiN, bjorne.w@telia.com
-- Fame is a bitch, man [Brad Pitt - Fight Club] --