Zum Inhalt springen

https seiten nur über https


Empfohlene Beiträge

hi und hallo,

wir wollen eine mitgliedsverwaltung einrichten, die nur über https erreichbar ist.

im moment ist unsere strutur so angelegt, dass wir eine index.php haben und über parameter (wie ids oder template namen) den inhalt unserer seiten steuern.

nun soll es so sein, dass wenn es sich um seiten der mitgliedsverwaltung handelt, diese nur über https erreichbar sind.

Drei fragen dazu:

1. wie stelle ich sicher dass genau diese seiten nur über https erreichbar sind?

2. ist das eine apache einstellung?

3. oder wenn nicht, löse ich das über php. meine idee dazu:

- wenn seite als "nur https" geflaggt

- überprüfe broser url

- wenn nur http:// darin vorkommt

- redirect auf selbe adresse nur mit vorangestelltem https://

aber diese lösung hört sich für mich ein bisschen komisch an.

weiss da jemand was? wäre sehr glücklich

vielen dank schonmal

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. wie stelle ich sicher dass genau diese seiten nur über https erreichbar sind?

sowieso immer serverseitig; eben entweder über php oder apache-conf.

2. ist das eine apache einstellung?

# übergang auf https erzwingen

   SSLRequireSSL

   SSLOptions +StrictRequire

   ErrorDocument 403 /mein/fehlerdokument/oder/script.php
oder
RewriteEngine On

RewriteCond %{SERVER_PROTOCOL} !^https$

RewriteRule /* https://subdomain.domain.tld%{REQUEST_URI} [R=permanent,L]
3. oder wenn nicht, löse ich das über php. meine idee dazu: - wenn seite als "nur https" geflaggt - überprüfe broser url - wenn nur http:// darin vorkommt - redirect auf selbe adresse nur mit vorangestelltem https:// aber diese lösung hört sich für mich ein bisschen komisch an.
nö, finde ich nicht, verwende halt sowas in der art:
function secure_page()

 {

   if ( !isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' )

     {

       header ('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);

       exit();

     }

 } 

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

wir wollen eine mitgliedsverwaltung einrichten, die nur über https erreichbar ist.

im moment ist unsere strutur so angelegt, dass wir eine index.php haben und über parameter (wie ids oder template namen) den inhalt unserer seiten steuern.

Also erstmal ist ein https-Server (SSL) für den Apache ein eigenständiger Server/vHost. Wenn du also einen Teil der Seite als https-Teil und einen Teil ohne Verschlüsselung hast, musst du das entweder über 2 Verzeichnisse machen, oder du stellst im Apache den vHost für SSL so ein, dass er aufs gleiche Verzeichnis geht, wie der Standard-Server.

Am einfachsten ist es also, wenn du die Seite komplett über https laufen lässt.

Is aber nicht unbedingt immer gewünscht...

wie es aussieht habt ihr so eine Art CMS (index.php mit Parametern), das macht die Sache u.U etwas komplizierter.

Wenn ihr vollen Zugriff auf den Apache habt, legst du den SSL-Server einfach so an, dass das DocumentRoot auf dasselbe Verzeichnis weisst wie der Standard-Server. Dann musst du nur den Link anpassen (https:// statt http://) und alles is erledigt.

Falls das nicht geht, wie bei uns, weil wir vom Anbieter (Root-Server) Plesk zur Verwaltung haben und da eine Starre Struktur hinterlegt ist (SSL-Server = neues Verzeichnis) und auch manuelle Änderungen im Zweifel von Plesk überschrieben werden, bleibt dir nur die Möglichkeit, die beiden Verzeichnisse immer auf den gleichen Stand zu halten. Wir machen das über Cron und rsync, geht aber auch manuell (da musst du halt aber mehr aufpassen).

Dateien, die absolute Pfade beinhalten musst du von der Synchronisierung ausschliessen.

Wenn die Links dynamisch aufgebaut werden, musst du dafür sorgen, dass der Link entsprechend angepasst wird.

Ob du gerade auf dem SSL-Server bist, mekrst du über den Port, auf dem angefragt wurde

$_SERVER["SERVER_PORT"]


if ($_SERVER["SERVER_PORT"]!=$https_port)
$protocol = "http://";
else
$protocol = "https://";

$url_new = $protocol.$_SERVER["HTTP_HOST"]."/".$url;
[/php]

So hab ich das gemacht (auszugsweise).

EDIT:

Evtl. musst du halt auf den entspr. Seiten noch prüfen, ob sie in der SSL-Umgebung angezeigt werden (geht auch über den Port).

Ein reiner SSL-Server (http://index.php leitet nur auf https:// um) ist alles in allem viel einfacher zu handhaben ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

hi und hallo.

ich muss leider nochmal nachhaken.

habe mir ja jetzt einiges zum thema https durchgelesen und soweit verstanden.

aber ich habe trotzdem ein verständnisproblem.

nehmen wir mal an ich habe eine seite

index.php

in dieser befindet sich ein login formular.

das formular postet die daten wieder auf die index.php seite wo die daten dann auch überprüft werden.

werden die daten nur sicher übertragen wenn ich die index.php schon so aufrufe:

https://index.php

oder reicht es die seite "normal" über http://index.php auzurufen, und dann die form action auf httpS://index.php zu setzen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Perdi,

Wo hast du denn den Blödsinn her?

http://www.google.com/search?hl=de&q=dpinfo

oder

http://www.google.com/search?hl=de&q=ccc+https

beweisen das Gegenteil

schön, dass du mir gleich das Beispiel für meine Aussage lieferst.

Wie du siehst, wird nur die index Datei der Domain indiziert.

Alle Links von dieser Seite sind nicht im Google Index (https://www.ccc.de/)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Menge der (durchaus brauchbaren) Suchmaschinen beinhaltet nicht nur Google.

.... :schlaf:

Google ist die wohl meist genutzte...

Ausserdem...

yahoo auch nicht...

http://de.search.yahoo.com/search?p=ccc+https&prssweb=Suche&ei=UTF-8&fr=fp-tab-web-t-1&x=wrt&meta=vl%3D

fireball ebenso nicht

http://suche.fireball.de/cgi-bin/pursuit?query=ccc+https&x=0&y=0&cat=fb_loc&enc=utf-8

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Eine Quelle direkt liegt mir nicht vor. Aber HTTP läuft doch über TCP. Daraus folgt, bevor Daten übertragen werden (also via HTTP) muss die Verbindung zum Server aufgebaut werden (also zum SSL-Port). Erst wenn die Verbindung aufgebaut wurde, können dann Daten (HTTP-Request) geschickt bzw. angefordert werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Quelle direkt liegt mir nicht vor. Aber HTTP läuft doch über TCP. Daraus folgt, bevor Daten übertragen werden (also via HTTP) muss die Verbindung zum Server aufgebaut werden (also zum SSL-Port). Erst wenn die Verbindung aufgebaut wurde, können dann Daten (HTTP-Request) geschickt bzw. angefordert werden.

Ja, das sehe ich auch so, nur habe ich hier eine E-Mail, wo ein Kunde das nicht nachvollziehen oder glauben will. Deswegen dachte ich irgendwo was schriftliches wäre nicht schlecht.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber HTTP läuft doch über TCP. Daraus folgt, bevor Daten übertragen werden (also via HTTP) muss die Verbindung zum Server aufgebaut werden (also zum SSL-Port). Erst wenn die Verbindung aufgebaut wurde, können dann Daten (HTTP-Request) geschickt bzw. angefordert werden.

Du vermischts da etwas... HTTP ist nur ein Protokoll, also nur eine Art, wie die Daten selbst angeordnet sind. Der HTTP-Client und der HTTP-Server kennen beide das Muster zum Anordnen der Daten und sommit können die Daten überhaupt erst sinnvoll übertragen werden. Die Daten, ein Text z.B., werden vom Server als HTTP-Verpackt und dann per TCP verschickt (wozu sie nochmal "verpackt" werden). HTTPS ist genau dasselbe, nur dass dazu die Daten noch verschlüsselt werden. Der Schlüssel wird beim Verbindungsaufbau zwischen Clienht und Server ausgehandelt.

Der Verbindungsaufbau, den du ansprichst, kommt ja von TCP. HTTP selbst ist "stateless", also kennt keinen Zustand und kann sich somit auch keinen merken. Eine Verbindung ist nur zum ÜBertragen von Daten da. Wenn die Daten Übertragen sind (HTTP-Request + HTTP-Response) ist die Verbindung beendet. Für eine neue Anfrage muss eine neue Verbindung aufgebaut werden, und weder Server noch Client "wissen" dass sie gerade schon miteinander zu tun hatten.

Eine HTTPS-Anfrage geht nicht zuerst über HTTP-Verbindung, sondern ist eine ganz eigenständige Verbindung.

Das Beispiel oben (Seite per http und Form-Action per https) bewirkt nur, dass die Übertragung der Seite (vom Server zum Client) unverschlüsselt abläuft und erst die "Antwort", also die im Formular eingegebenen Daten (vom Client zum Server und entsprechend wieder die Antort vom Server), dann per https (verschlüsselt) übertragen werden. Es sind aber 2 eigenständige Verbindungen die miteinander nichts zu tun haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe doch nichts anderes gesagt. Ich wollte das Ganze nur nicht so ausschweifend formulieren.

@Jaraz

Link 1 (RFC zu HTTP over TLS): http://www.ietf.org/rfc/rfc2818.txt

Hier besonders Punkt 2.

Link 2 (Seite ist vom BSI): http://www.ohne-aktive-inhalte.de/funktionsablauf/fa1/index.html

Ich würde sagen, dass es offizieller kaum geht, oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du die Seite vollständig via SSL verschlüsselst, wird diese in keiner Suchmaschine indiziert!

Das stimmt soweit wohl, aber:

In der Auswertung der SSL-Logs unserer Seite taucht eine suchmachine trotzdem auf, und zwar der Googlebot mit 68 Zugriffen und 7 Zugriffen auf dir robots.txt.

Diese auswertung ist noch recht neu (kopier mir die Access-logs lokal jeden Tag und lass sie von awstats auswerten), weiß also nicht, wie das über den ganzen Monat verteilt aussieht.

Auf den "freien" Seiten (auf SSL kommt man beim Login, die Seiten sind aber sonst dieselben, nur mehr) hat der Googlebot in der Zeit 212mal zugegriffen (+15 robots.txt) und ausserdem noch einige andere.

Also ich weiss nicht genau, was google da auswertet und wie, aber scheinbar hindert https den Googlebot nicht komplett am indizieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...