header location versus href

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
Hoi,
Ik wilde een apk bestand op m'n thuisservertje, ubuntu 12.4, ter download aanbieden maar beveiligen met een password.
Ik heb eerst authentication via .htaccess geprobeerd maar ik kreeg de klacht dat men niet kon downloaden, in dit geval dus via android browsers. Binnen m'n eigen netwerk lukte dat wel.

Daarna heb ik dit geprobeerd
code:
1
2
3
if ($_POST['pass'] == "bla")
 header("Location: somepath/some.apk");
else echo "<body><form method=post>Please enter password <input type=text name='pass'>";


Dat gaf dezelfde fout, pas met href werkte het wel.

code:
1
2
3
if ($_POST['pass'] == "bla")
 echo "<a href='somepath/some.apk'>Download</a>";
else echo "<body><form method=post>Please enter password <input type=text name='pass'>";


Waarom werken die 2 eerste methodes niet?

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 11-07 12:10

TheNephilim

Wtfuzzle

Met .htaccess is het mogelijk om je download te beveiligen als iemand de link wel weet, maar het wachtwoord niet.

Door gewoon een link te gebruiken, is de download opzich niet veilig. Je kunt namelijk gewoon http://domeinnaam.nl/somepath/some.apk benaderen en dan alsnog het bestand downloaden.

Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 14:18
Zelf heb ik hier ook problemen met het downloaden van bestanden. Dit werkt op ios wel, en zal er waarschijnlijk mee tem aken hebben dat de downloads via een aparte applicatie worden gedaan, die dus niet meer ingelogd is.

De oplossingen die je hier hebt gegeven zijn ook niet helemaal je van het, aangezien de beveiliging makkelijk te omzeilen is, maar hier weet ik niet wat je bedoelingen zijn. Je kan het denk ik beter met PPH beveiligen en vervolgens uitlezen met readfile(), maar daar kan je misschien problemen tegenkomen met android.

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
TheNephilim schreef op vrijdag 19 april 2013 @ 10:05:
Met .htaccess is het mogelijk om je download te beveiligen als iemand de link wel weet, maar het wachtwoord niet.
Maar de download lukte niet...
Door gewoon een link te gebruiken, is de download opzich niet veilig. Je kunt namelijk gewoon http://domeinnaam.nl/somepath/some.apk benaderen en dan alsnog het bestand downloaden.
Ja maar die link kun je pas zien nadat je het goede ww hebt ingevoerd.

Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 14:18
Anoniem: 302117 schreef op vrijdag 19 april 2013 @ 10:07:
[...]

Ja maar die link kun je pas zien nadat je het goede ww hebt ingevoerd.
Iemand voert eenmaal het goede wachtwoord in en vervolgens kan hij naar iedereen de link opsturen.

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
martin149 schreef op vrijdag 19 april 2013 @ 10:08:
[...]


Iemand voert eenmaal het goede wachtwoord in en vervolgens kan hij naar iedereen de link opsturen.
Ja maar ww krijgen alleen mensen die ik vertrouw, verder is het dan mn eigen schuld.

Wat je zei over 'andere applicatie die de download doet en niet meer ingelogd is', zoiets lijkt het op ja.

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 22:33

RM-rf

1 2 3 4 5 7 6 8 9

Anoniem: 302117 schreef op vrijdag 19 april 2013 @ 09:52:

Waarom werken die 2 eerste methodes niet?
'het werkt niet' is niet zeer informatief....

welke foutmelding wordt gegeven, wat is de exacte tekst vand e foutmelding en in welke clients treden die hoe op?

de eerste lijn code die een conditie liet bepalen of er een stuk html ge-echoed wordt of een header gezet, doet me vermoeden dat de foutmelding wel eens zou kunnen zijn "Cannot modify header information - headers already sent by"

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 22:48

Rmg

Anoniem: 302117 schreef op vrijdag 19 april 2013 @ 10:10:
[...]


Ja maar ww krijgen alleen mensen die ik vertrouw, verder is het dan mn eigen schuld.

Wat je zei over 'andere applicatie die de download doet en niet meer ingelogd is', zoiets lijkt het op ja.
Zo te horen is een wachtwoord dan eigenlijk al overkill. Is een strenge robots.txt tegen indexatie van zoekmachines en een niet publieke url niet al genoeg?

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
RM-rf schreef op vrijdag 19 april 2013 @ 10:11:
[...]


'het werkt niet' is niet zeer informatief....

welke foutmelding wordt gegeven, wat is de exacte tekst vand e foutmelding en in welke clients treden die hoe op?

de eerste lijn code die een conditie liet bepalen of er een stuk html ge-echoed wordt of een header gezet, doet me vermoeden dat de foutmelding wel eens zou kunnen zijn "Cannot modify header information - headers already sent by"
Je leest niet goed. Het werkt bv lokaal wel. Dus nies aan de hand met headers already sent by, die code die daar staat heeft daar geen last van.

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
Rmg schreef op vrijdag 19 april 2013 @ 10:12:
[...]
Zo te horen is een wachtwoord dan eigenlijk al overkill. Is een strenge robots.txt tegen indexatie van zoekmachines en een niet publieke url niet al genoeg?
Hmm, eigenlijk heb je wel gelijk ja. Alleen ww verander je makkelijker als url.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:04

NMe

Quia Ego Sic Dico.

Anoniem: 302117 schreef op vrijdag 19 april 2013 @ 10:14:
[...]

Je leest niet goed. Het werkt bv lokaal wel. Dus nies aan de hand met headers already sent by, die code die daar staat heeft daar geen last van.
Nee, maar wat is er dan wél aan de hand? Wij kunnen dat ook niet raden....

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 14:18
Je kan natuurlijk voor één bestand niet te moeilijk doen en gewoon een online opslagservice gebruiken die je een wachtwoord op een file laat zetten? :P

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
<kristallen bol>

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
martin149 schreef op vrijdag 19 april 2013 @ 10:33:
Je kan natuurlijk voor één bestand niet te moeilijk doen en gewoon een online opslagservice gebruiken die je een wachtwoord op een file laat zetten? :P
Hey ik vind dat, ahem, beneden mij waardigheid. :)

Er zal toch een of andere verklaring zijn waarom het een wel werkt en het ander niet, of tenminste, niet altijd. Ik ben daar nieuwsgierig naar, meer niet.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:04

NMe

Quia Ego Sic Dico.

Die verklaring gaat er vast zijn maar als je niet eens kan vertellen wát er dan fout gaat houdt het wat een topic betreft al snel op. Dus nogmaals: wat gebeurt er nou dan???

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
NMe schreef op vrijdag 19 april 2013 @ 10:45:
Die verklaring gaat er vast zijn maar als je niet eens kan vertellen wát er dan fout gaat houdt het wat een topic betreft al snel op. Dus nogmaals: wat gebeurt er nou dan???
'De browser stopt ermee' kreeg ik te horen, verder geen foutmeldingen. Dat is een beetje vaag maar meer heb ik ook niet. Verder kreeg ik alleen maar 'het werkt niet' te horen, dus daar kan ik ook niks aan doen.

Edit: 'De browser stopt ermee' betekent volgens mij, de download start, maar breekt dan meteen weer af. Ik heb de man gebeld namelijk en dat is wat er volgens mij gebeurde.

[ Voor 25% gewijzigd door Anoniem: 302117 op 19-04-2013 10:58 ]


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 23:15

Damic

Tijd voor Jasmijn thee

Volgende keer vraag een foto van de fout melding ;)

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Anoniem: 302117 schreef op vrijdag 19 april 2013 @ 10:48:
[...]

'De browser stopt ermee' kreeg ik te horen, verder geen foutmeldingen. Dat is een beetje vaag maar meer heb ik ook niet. Verder kreeg ik alleen maar 'het werkt niet' te horen, dus daar kan ik ook niks aan doen.
Tuurlijk wel. Jij moet de gebruiker opvoeden, Of verwacht je nu dat wij met jouw gebruiker gaan praten ???

er is bijna altijd wel een foutmelding. al is het alleen maar een timeout op iets

Iperf


Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
fish schreef op vrijdag 19 april 2013 @ 10:58:
[...]


Of verwacht je nu dat wij met jouw gebruiker gaan praten ???
En hoe kom je daarbij??? En hoezo wij, je kan wel voor jezelf spreken toch?

[ Voor 10% gewijzigd door Anoniem: 302117 op 19-04-2013 11:00 ]


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

nou kennelijk kan jij het niet. waarom wij? omdat je met een groep mensen praat ? ik kan zeket voor mezlef praten. dat jij je af laat schepen met ik zie geen error, hoevaak zie je geen foutmelding als er iets niet goed gaat met een pagina ? heb ik nou op je pik getrapt ?

"dus daar kan ik ook niks aan doen."

en uiteidelijk zal iemand dat moeten doen want daar werkt het niet.

Wat zie je in je logs eigenlijk ?

[ Voor 26% gewijzigd door Fish op 19-04-2013 11:06 ]

Iperf


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:04

NMe

Quia Ego Sic Dico.

Anoniem: 302117 schreef op vrijdag 19 april 2013 @ 10:59:
[...]

En hoe kom je daarbij??? En hoezo wij, je kan wel voor jezelf spreken toch?
Hoe willen wij voor onszelf kunnen spreken zonder jouw code te nemen, op onze eigen server (die op magische wijze zonder informatie van jouw kant dezelfde specs heeft als de jouwe) te zetten en vervolgens te testen met tig toestellen die de Android-browser draaien?

Jij bent degene met het probleem, jij bent met degene die met de info moet komen. Als je zelf al niet meer informatie hebt dan "hij doet het niet" dan heb je zelf je gebruikers niet genoeg vragen gesteld en inderdaad zelf je eigen logs niet eens bekeken. Wat verwacht je nou van ons? Je noemde hier zelf de glazen bol al en dat is inderdaad precies waar dit topic op neerkomt. Heb jij nog minder aan dan wij...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Cor453
  • Registratie: Mei 2011
  • Laatst online: 08-07 22:22
Kun je niet iets doen in de geest van een wachtwoord op je VirtualHost (apache) of site (IIS)? Ik weet niet wat je voor webserver gebruikt, maar voor Apache zou je hier kunnen kijken: http://httpd.apache.org/docs/2.2/howto/auth.html

Sowieso staat er veel op Google over de manieren om files te beveiligen op je webserver. Ideeën kunnen onder andere zijn:

1. Werken met PHP's readfile() functie (bestanden niet te groot laten worden), zodat het bestand zelf niet direct gedownload wordt.
2. Zorgen dat een bright mind niet even een URL kan vissen en de beveiliging bij 1 kan omzeilen en TOCH kan downloaden.
3. Zorgen voor een wachtwoord beveiliging op een map, vhost, site of virtual directory.

Ik denk dat NMe gelijk heeft als hij zegt dat je dit (ten dele) ook zelf had kunnen zien, vinden of beschrijven. Je omschrijving is nu zelfs zo summier dat we niet eens weten wat je server-omgeving is, en we weten alleen dat je een APK bestand wilt serveren.

Dan zou je ook nog kunnen kijken naar de afhandeling van het bestandstype op je server. Als je IIS gebruikt zou het kunnen dat je geen MIME Type directive hebt voor de APK extensie. Hoe je die maakt kun je wel vinden op Google: http://lmgtfy.com/?q=add+mime+type+iis

Acties:
  • 0 Henk 'm!

Anoniem: 302117

Topicstarter
Het gaat idd om apache. En ik heb al een beveiliging via een map met .htaccess geprobeerd, staat in m'n eerste post. Er staat *niets in error.log. En bovendien, als het aan iets dergelijks als mime type ligt, waarom werkt het dan op het intern netwerk wel.
Maar goed, mijn nieuwsgierigheid is bevredigd, iedereen bedankt voor de bijdrage.

Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

logfiles (meervoud)

Dus niet alleen je error log, maar je hebt ook een acces logg
dus tot waar kom je dan wel.

Iperf


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 22:33

RM-rf

1 2 3 4 5 7 6 8 9

okay...

dan lijkt het wat mij betreft opgelost, de fout ligt kennelijk bij mij

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • Kptzeiksnor
  • Registratie: Juli 2011
  • Laatst online: 03-01-2023
Hier nog een mogelijke oplossing mocht het toch niet lukken.
Werkt met sessie variabele

*disclaimer: snel getikt. niet gelet op typos etc*

Pagina 1 (index.php)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
session_start();

if(isset($_SERVER) && $_SERVER['REQUEST_METHOD'] == "POST")
{
   if($_POST['pass'] == "bla")
   {
         $_SESSION['valid'] = true;
         header('location: download.php');
         exit;
    }
}
else{
    /** formuliertje **/
}
?>

Pagina 2 (download.php)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
if(isset($_SESSION) && $_SESSION['valid'])
{
         // force downloaden bestand met headers
        // weet niet of dit de goede headers zijn
        // maar dat kun je zo op internet vinden (desnoods je .apk even zippen)
       $file = "bestandnaam.apk";

       header('Content-Description: File Transfer');
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="'.basename($file).'"'); //<<< Note the " " surrounding the file name
       header('Content-Transfer-Encoding: binary');
        header('Connection: Keep-Alive');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
}
else{
      header('location: index.php');
      exit;
}
?>

Acties:
  • 0 Henk 'm!

  • Cor453
  • Registratie: Mei 2011
  • Laatst online: 08-07 22:22
@Kptzeiksnor: kleine toevoeging, in je 2e php file moet volgens mij onder de laatste header() readfile($file); staan.

Acties:
  • 0 Henk 'm!

  • Msjl
  • Registratie: Januari 2010
  • Laatst online: 20-05 20:16
Volgens http://nl1.php.net/manual/en/function.header.php
HTTP/1.1 requires an absolute URIas argument to » Location : including the scheme, hostname and absolute path, but some clients accept relative URIs.

You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative one yourself:
code:
1
2
3
4
5
6
7
8
<?php
/* Redirect to a different page in the current directory that was requested */
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;
?>
Pagina: 1