Login über zwei Domains hinweg – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Login über zwei Domains hinweg Mon, 27 Aug 18 06:45:45 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730211#m1730211 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730211#m1730211 <p>Hallo,</p> <p>besteht irgendwie die Möglichkeit ein Login über zwei Domains hinweg zu realisieren? Ich nutze für mein Login eine Session.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Login über zwei Domains hinweg Mon, 27 Aug 18 06:58:48 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730212#m1730212 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730212#m1730212 <p>Hallo Meowsalot,</p> <blockquote> <p>besteht irgendwie die Möglichkeit ein Login über zwei Domains hinweg zu realisieren? Ich nutze für mein Login eine Session.</p> </blockquote> <p>Dass dies kein Problem ist, siehst du wenn du vernetzte Seiten, wie Facebook, Google, etc. siehst. Einmal eingeloggt, auf vielen Domains aktiv. Was natürlich für die auch das Tracking noch einfacher und personalisierter macht. Hat daher auch seinen Grund, warum das ausloggen oft umständlicher zu finden ist, als das einloggen.</p> <p>Aber zurück zu deiner Frage, da bräuchte es schon ein paar Einzelheiten mehr.</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div> Login über zwei Domains hinweg Mon, 27 Aug 18 07:18:45 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730214#m1730214 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730214#m1730214 <p>Tach!</p> <blockquote> <p>besteht irgendwie die Möglichkeit ein Login über zwei Domains hinweg zu realisieren? Ich nutze für mein Login eine Session.</p> </blockquote> <p>Kommt drauf an, ob du eine Lösung à la <a href="https://en.wikipedia.org/wiki/OpenID" rel="nofollow noopener noreferrer">OpenID</a> oder <a href="https://en.wikipedia.org/wiki/OAuth" rel="nofollow noopener noreferrer">OAuth</a> haben möchtest, oder ob du was eigenes basteln kannst.</p> <p>Das Problem ist, dass du die Logged-In-Information (üblicherweise eine Session-ID) auf dem Client von Domain A zu Domain B bekommen musst. Wenn du aber Seiten von A aufrufst, kannst du nicht auf Cookies oder localStorage von B zugreifen. (Begrenzt sind Cookies möglich, bei Subdomains.)</p> <p>Eine Lösung wäre, eine Domain C verwaltet die Anmeldungen. Beim Besuch von A oder B wird C kontaktiert und um eine Session-ID (oder eine andere Art der Logged-In-Information) gefragt. Die überträgst du dann in Requests zu A und B. Du müsstest aber über CORS-Header freigeben, dass der Browser die fremde Domain C besuchen darf, wenn du auf A oder B bist. Alternativ gehts auch ohne C, dann jeweils den anderen (A<->B) befragen.</p> <p>dedlfix.</p> Login über zwei Domains hinweg Mon, 27 Aug 18 11:16:20 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730232#m1730232 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730232#m1730232 <p>Mahlzeit,</p> <blockquote> <p>besteht irgendwie die Möglichkeit ein Login über zwei Domains hinweg zu realisieren? Ich nutze für mein Login eine Session.</p> </blockquote> <p>Generell ja. Der Aufwand hängt dann u.a. davon ab ob sich beide Domains auf dem gleichen Server befinden und ob sie sich den Userspace teilen.</p> <p>Aktuell realisiere ich ein Kundenprojekt mit mehreren Domains auf Basis von OctoberCMS. Die Domains zeigen alle auf das gleiche Verzeichnis und das CMS übernimmt das Routing bis hin zur Auswahl des Templates, Sprache, Inhalte pro Domain und alles ist in einer Oberfläche bearbeit- und wartbar. Login gibt es dadurch für alle Domains auch nur eins.</p> <div class="signature">-- <br> 42 </div> Login über zwei Domains hinweg Mon, 27 Aug 18 07:17:54 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730213#m1730213 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730213#m1730213 <p>Hallo Henry,</p> <p>ich habe folgende Script um zu prüfen ob ein User eingeloggt ist</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">isUserLoggedIn</span><span class="token punctuation">(</span><span class="token variable">$mysqli</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$session</span> <span class="token operator">=</span> <span class="token function">session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span> <span class="token operator">=</span> <span class="token variable">$mysqli</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"SELECT * FROM zugangsdaten WHERE user_session=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">bind_param</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"s"</span><span class="token punctuation">,</span> <span class="token variable">$session</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">store_result</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">num_rows</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Mit folgendem Script logge ich einen User ein</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">login</span><span class="token punctuation">(</span><span class="token variable">$mysqli</span><span class="token punctuation">,</span> <span class="token variable">$userMail</span><span class="token punctuation">,</span> <span class="token variable">$pw</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$stmt</span> <span class="token operator">=</span> <span class="token variable">$mysqli</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">" SELECT user_id FROM zugangsdaten WHERE user_nickname=? AND user_passwort=? AND user_aktiv=? AND user_onoff=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$ak</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token variable">$uk</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">bind_param</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ssss"</span><span class="token punctuation">,</span> <span class="token variable">$userMail</span><span class="token punctuation">,</span> <span class="token variable">$pw</span><span class="token punctuation">,</span> <span class="token variable">$ak</span><span class="token punctuation">,</span> <span class="token variable">$uk</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">store_result</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">num_rows</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$stmt</span> <span class="token operator">=</span> <span class="token variable">$mysqli</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">" Update zugangsdaten SET user_session=?, user_login=now() WHERE user_nickname=? AND user_passwort=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">bind_param</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ssi"</span><span class="token punctuation">,</span> <span class="token function">session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$userMail</span><span class="token punctuation">,</span> <span class="token variable">$pw</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Solange ich auf einer Domain bleibe funktioniert dieses Problemlos. Sobald ich jetzt die zweite Domain aufrufe, die auf die gleiche Datenbank zugreift bekomme ich das Login angezeigt, sprich ich bin auf der anderen Seite nicht eingeloggt.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Unsicherer Ansatz: Passwörter im Klartext Mon, 27 Aug 18 10:29:16 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730224#m1730224 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730224#m1730224 <blockquote> <p>Solange ich auf einer Domain bleibe funktioniert dieses Problemlos. Sobald ich jetzt die zweite Domain aufrufe, die auf die gleiche Datenbank zugreift bekomme ich das Login angezeigt, sprich ich bin auf der anderen Seite nicht eingeloggt.</p> </blockquote> <p>Ich fand:</p> <pre><code class="block">$session = session_id(); </code></pre> <p>Das ist also klar. Denn die Session gilt immer nur für eine Domain. Und das ist auch gut so.</p> <p>Doch dann fand ich noch:</p> <blockquote> <pre><code class="block bad language-php"><span class="token constant">SELECT</span> user_id <span class="token constant">FROM</span> zugangsdaten <span class="token constant">WHERE</span> user_nickname<span class="token operator">=</span><span class="token operator">?</span> <span class="token keyword">AND</span> user_passwort<span class="token operator">=</span><span class="token operator">?</span> <span class="token keyword">AND</span> user_aktiv<span class="token operator">=</span><span class="token operator">?</span> <span class="token keyword">AND</span> user_onoff<span class="token operator">=</span><span class="token operator">?</span><span class="token string double-quoted-string">"); … <span class="token interpolation"><span class="token variable">$stmt</span><span class="token operator">-></span><span class="token property">bind_param</span></span>("</span>ssss"<span class="token punctuation">,</span> <span class="token variable">$userMail</span><span class="token punctuation">,</span> <span class="token variable">$pw</span><span class="token punctuation">,</span> <span class="token variable">$ak</span><span class="token punctuation">,</span> <span class="token variable">$uk</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Du speicherst also das Passwort im Klartext. <strong>Das ist gefährlich.</strong> Benutze hierfür die Funktion <a href="http://php.net/manual/de/function.password-hash.php" rel="noopener noreferrer">password_hash()</a> und deren Schwestern <a href="http://php.net/manual/de/function.password-verify.php" rel="noopener noreferrer">password_verify()</a>, <a href="http://php.net/manual/de/function.password-needs-rehash.php" rel="noopener noreferrer">password_needs_rehash()</a>.</p> <p>Falls Du auf den Gedanke kommst, die MySQL/MariaDB-interne Funktion <a href="https://mariadb.com/kb/en/library/password/" rel="nofollow noopener noreferrer">PASSWPORD()</a> zu benutzen, beachte die Warnung:</p> <pre><code class="block bad language-txt">The PASSWORD() function is used for hashing passwords for use in authentication by the MariaDB server. It is not intended for use in other applications. </code></pre> <p>Um die für Dein Vorhaben günstigste Vorgehensweise auswählen zu können brauche ich noch Informationen:</p> <ul> <li>Liegen beide Domains <strong>dauerhaft</strong> im Sinne "für immer und ewig" auf dem gleichen Server?</li> <li><strong>Hast Du für beide HTTPS?</strong></li> </ul> <p>Eine Lösung wird übrigens nicht trivial sein. <strong>Dein Vorhaben wird also einigen Aufwand verursachen.</strong> Sind die Domains nicht "für immer und ewig" auf dem gleichen Server ist der halt nur größer.</p> <p>Die Frage ist: Willst Du das WIRKLICH? oder geht es Dir nur um die Behebung einer eher kleinen Unbequemlichkeit?</p> <p><strong>Beginne in jedem Fall damit, das ernsthafte Problem mit den Klartextpasswörtern zu beheben.</strong></p> <p><a href="https://code.fastix.org/Projekte/PHP%3Alogin-system/PHP-Anwendung%20und%20Praxis-Loginsystem.pdf" rel="nofollow noopener noreferrer">Hier mal was älteres von mir zu dem Thema (PDF)</a>. Das hat aber mit PHP 7.x weiter Gültigkeit.</p> Login über zwei Domains hinweg Mon, 27 Aug 18 12:34:42 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730243#m1730243 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730243#m1730243 <p>hi</p> <blockquote> <p>ich habe folgende Script um zu prüfen ob ein User eingeloggt ist</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">isUserLoggedIn</span><span class="token punctuation">(</span><span class="token variable">$mysqli</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$session</span> <span class="token operator">=</span> <span class="token function">session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$stmt</span> <span class="token operator">=</span> <span class="token variable">$mysqli</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"SELECT * FROM zugangsdaten WHERE user_session=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Was haben bei Dir die Zugangsdaten mit einer solchen Prüfung zu tun? Das ist doch nicht etwa alles in einer Tabelle bei Dir?</p> <p>MfG</p> Login über zwei Domains hinweg Mon, 27 Aug 18 07:35:05 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730215#m1730215 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730215#m1730215 <p>Hallo dedlfix,</p> <p>danke für deine Erklärung.</p> <blockquote> <p>Eine Lösung wäre, eine Domain C verwaltet die Anmeldungen. Beim Besuch von A oder B wird C kontaktiert und um eine Session-ID (oder eine andere Art der Logged-In-Information) gefragt. Die überträgst du dann in Requests zu A und B. Du müsstest aber über CORS-Header freigeben, dass der Browser die fremde Domain C besuchen darf, wenn du auf A oder B bist. Alternativ gehts auch ohne C, dann jeweils den anderen (A<->B) befragen.</p> </blockquote> <p>Eine weitere Domain nur für den Login würde ich ungern nutzen wollen. Da ist mir das A<->B lieber. Wie mein Login und die Prüfung derzeit ausschaut siehst du hier:</p> <p><a href="https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730213#m1730213" rel="noopener noreferrer">https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730213#m1730213</a></p> <p>was müsste ich jetzt machen um das A<->B umzusetzten?</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Login über zwei Domains hinweg Mon, 27 Aug 18 08:09:07 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730216#m1730216 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730216#m1730216 <p>Hallo Meowsalot,</p> <blockquote> <p>Hallo dedlfix,</p> </blockquote> <blockquote> <p>Eine weitere Domain nur für den Login würde ich ungern nutzen wollen. Da ist mir das A<->B lieber.</p> </blockquote> <p>wie <a href="/users/27" class="mention registered-user" rel="noopener noreferrer">@dedlfix</a> schon schrieb, ist C nicht zwingend notwendig.</p> <blockquote> <blockquote> <p>Alternativ gehts auch ohne C, dann jeweils den anderen (A<->B) befragen.</p> </blockquote> </blockquote> <p>Also eine Mutterdomain, welche die Kinder steuert.</p> <blockquote> <p>was müsste ich jetzt machen um das A<->B umzusetzten?</p> </blockquote> <p>Die Anmeldeprozedur automatisiert bei den vernetzten Domains ausführen lassen oder alternativ, so würde ich es machen, beim Besuch von B, C, D, etc. ein Script laufen lassen, dass prüft ob ich bereits bei A eingeloggt bin und dann die Loginfreigabe (Session erstellen) auf der jeweiligen Seite. Falls nicht bei A eingeloggt, dann bei XY einloggen und simultan bei A einloggen (bzw. je nach Prüfroutine den Status dort deklarieren).</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div> Login über zwei Domains hinweg Mon, 27 Aug 18 08:35:20 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730217#m1730217 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730217#m1730217 <p>Tach!</p> <blockquote> <p>Eine weitere Domain nur für den Login würde ich ungern nutzen wollen. Da ist mir das A<->B lieber. Wie mein Login und die Prüfung derzeit ausschaut siehst du hier:</p> </blockquote> <p>Die Serverseite ist das kleinere der beiden Teilprobleme. Zuerst solltest du clientseitig herausfinden, wie man den Browser dazu bringen kann, eine Information, die er von Domain A bekommen hat, zu Domain B zu senden. Lass dein Projekt erstmal beiseite und versuch diesen Schritt prinzipiell hinzubekommen. Dann kannst du schauen, ob/wie das auch mit Cookies geht.</p> <p>Der nächste Schritt ist zu erkunden, wie die Serverseite dazu aussehen kann. Wie kommt eine Information vom VHost der Domain A so zu liegen, dass der VHost der Domain B diese lesen kann, und im speziellen wie das mit Session-Daten vonstatten gehen kann.</p> <p>dedlfix.</p> Unsicherer Ansatz: Passwörter im Klartext Mon, 27 Aug 18 12:22:34 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730241#m1730241 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730241#m1730241 <p>Hallo Regina,</p> <p>wie kommst du darauf dass ich meine Passwörter als Klartext in der Datenbank speichere? So schaut es in meiner Tabelle aus</p> <p><a href="/images/21fa55f1-b572-42df-9c4d-0ae9a8f5829b.png" rel="noopener noreferrer"><img src="/images/21fa55f1-b572-42df-9c4d-0ae9a8f5829b.png?size=medium" alt="" loading="lazy"></a></p> <p>Das Login erledige ich so</p> <pre><code class="block language-php"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">isUserLoggedIn</span><span class="token punctuation">(</span><span class="token variable">$mysqli</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token constant boolean">TRUE</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Location: index.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'einloggen'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$user_nickname</span> <span class="token operator">=</span> <span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'user_nickname'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$passwort</span> <span class="token operator">=</span> <span class="token function">hash</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'sha256'</span><span class="token punctuation">,</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"passwort"</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token variable">$salt</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">login</span><span class="token punctuation">(</span><span class="token variable">$mysqli</span><span class="token punctuation">,</span> <span class="token variable">$user_nickname</span><span class="token punctuation">,</span> <span class="token variable">$passwort</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token constant boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$page</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'index.php'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'page_after_login'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token function">strlen</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword type-casting">string</span><span class="token punctuation">)</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'page_after_login'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$page</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword type-casting">string</span><span class="token punctuation">)</span><span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'page_after_login'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Location: '</span> <span class="token operator">.</span> <span class="token variable">$page</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token variable">$fehler</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"Login fehlgeschlagen!"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <blockquote> <p>Um die für Dein Vorhaben günstigste Vorgehensweise auswählen zu können brauche ich noch Informationen:</p> </blockquote> <blockquote> <p>quote hereLiegen beide Domains dauerhaft im Sinne "für immer und ewig" auf dem gleichen Server? quote hereHast Du für beide HTTPS?</p> </blockquote> <p>Beide Domains laufen selbstverständlich über HTTPS. Ich bin bei All-Inkl und habe einen Webhosting Vertrag. Der Support meinte, es kann sein dass Domain A auf Server B und Domain B auf Server X liegt obwohl ich nur einen Account habe.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Login über zwei Domains hinweg Mon, 27 Aug 18 12:27:15 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730242#m1730242 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730242#m1730242 <p>Hallo m.,</p> <p>ob die Domains immer auf dem gleichen Server liegen kann ich nicht sagen und würde mich darauf auch nicht verlassen. Ich bin zwar mit beiden Domains beim gleichen Hoster aber dieser meinte es kann innerhalb von einem Account auch sein, dass eine Domain auf Server A und die zweite auf Server X liegt.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 13:01:46 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730249#m1730249 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730249#m1730249 <blockquote> <p>Hallo Regina,</p> <p>wie kommst du darauf dass ich meine Passwörter als Klartext in der Datenbank speichere? So schaut es in meiner Tabelle aus</p> </blockquote> <p>Weil ich in Deinem Quelltext nichts von der Bildung eines (salted) Hashes gesehen habe.</p> <blockquote> <p><a href="/images/21fa55f1-b572-42df-9c4d-0ae9a8f5829b.png" rel="noopener noreferrer"><img src="/images/21fa55f1-b572-42df-9c4d-0ae9a8f5829b.png?size=medium" alt="" loading="lazy"></a></p> </blockquote> <p><strong>Oh Gott!</strong></p> <p>Was auch immer das für Hashes sind (ich sehe die Länge nicht) und ich hoffe nicht, dass gar etwas umkehrbar verschlüsseltes ist. (mit auf dem Server gespeicherten Schlüssel, was so sicher ist, wie den Schlüssel für einen Safe im Schreibtisch einzuschließen) Auch wenn es Hasches sind dann sind die, die ich da sehe, genau so gefährlich wie Klartextpasswörter, denn wenn es Hashes sind, dann sind diese ungesalzen. Auf jeden Fall hast Du nicht die password_hash()-Funktion oder deren Schwestern benutzt.</p> <p><strong>Und ja: Du musst das ändern.</strong> Sowas (unsalted hashes oder - <strong>DAS GENAU hast Du: Hashes mit einem nicht-individuellem salt)</strong> - hat man vor langer, langer Zeit so gemacht und DAMALS für "sicher genug" gehalten. Inzwischen kann man derlei sehr schnell knacken. Teraybyte-große SSDs für <a href="https://de.wikipedia.org/wiki/Rainbow_Table" rel="nofollow noopener noreferrer">Rainbow-Tables</a> sind im Konsumer-Segment angekommen, damit geht das richtig schnell.</p> <p><a href="https://www.golem.de/news/pwned-passwords-troy-hunt-veroeffentlicht-eine-halbe-milliarde-passworthashes-1802-132941.html" rel="nofollow noopener noreferrer">Mit sowas landet man in der Zeitung</a>.</p> Login über zwei Domains hinweg Mon, 27 Aug 18 12:46:56 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730245#m1730245 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730245#m1730245 <p>Mahlzeit,</p> <blockquote> <p>ob die Domains immer auf dem gleichen Server liegen kann ich nicht sagen und würde mich darauf auch nicht verlassen. Ich bin zwar mit beiden Domains beim gleichen Hoster aber dieser meinte es kann innerhalb von einem Account auch sein, dass eine Domain auf Server A und die zweite auf Server X liegt.</p> </blockquote> <p>Das würde dann aber bedeuten, dass du für jede Domain ein eigenes Login hast. Eine Domain ist nur eine Art Zeiger auf eine IP. Der Server (Apache, nginx o.ä.) sagt dann "die Domain kenn ich und ich weiss, wo die zugehörigen Inhalte liegen".</p> <p>Vielleicht verstehe ich das ja falsch aber ein Account heisst für mich, ich habe Webspace und ich habe Domains. Über eine Weboberfläche kann ich dann sagen, welche Domain auf welche Ordner im Dateisystem zeigen soll. Obige Aussage ist für mich daher unverständlich, wenn dein Account nicht Serverübergreifend auf Dateisysteme zugreifen kann.</p> <div class="signature">-- <br> 42 </div> Experiment: Sessiontransfer Tue, 28 Aug 18 08:43:49 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730343#m1730343 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730343#m1730343 <blockquote> <p>Ich bin zwar mit beiden Domains beim gleichen Hoster aber dieser meinte es kann innerhalb von einem Account auch sein, dass eine Domain auf Server A und die zweite auf Server X liegt.</p> </blockquote> <p>Das innerhalb eines Accounts zwei Domains auf zwei verschiedenen Servern liegen dürfte hinsichtlich der Account- und Domainverwaltung aus technischen Gründen technisch ziemlich schwierig zu händeln sein. Das geht schon bei disk-quotas (die ja für den vertrag und also den Account gelten) los. Ansonsten müsste man sich darüber unterhalten, was mit "Server" gemeint ist, und da würde ich von der Kiste ausgehen, die den eigentlichen Webserver (häufig: Apache) beherbergt.</p> <p>Was gibt denn</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>pre</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n"</span> <span class="token operator">.</span> <span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'SERVER_ADDR'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p>auf den jeweiligen Domains aus?</p> <p>Die IP Adresse von einem Client aus via DNS aufzulösen bringt nichts, weil da Proxys dazwischen sein können. Sowohl auf der Clientseite als auch auf der Serverseite kann das "transparent" geschehen, also so dass im öffentlichen DNS der Domainname auf die IP des Proxys zeigt. So kann z.B. ein "halbes Rechenzentrum" nach außen die öffentliche IP eines Proxys haben, der dann die Requests nur an die eigentlichen Server - mit vielleicht sogar privaten IPs (z.B. aus dem Adressbereich 10.x.x.x/8) verteilt. Insofern kann die Auflösung also die Täuschung erwecken, dass die Webseiten zweier oder mehr Domains auf dem gleichen Server liegen.</p> <ul> <li><code>$_SERVER['SERVER_ADDR']</code> zeigt Dir also die "endgültige" IP aus Serversicht. Die wäre hier womöglich aussagekräftiger.</li> </ul> <p>Kommen wir zur eigentlichen Session und zum <strong>Experiment</strong></p> <p><strong>Ich hab damit ein wenig rumgespielt, das Folgende hat nur Testcharakter, es soll Dich zum Weiterdenken animieren, es ist kein fertiger Code!</strong></p> <p>Der Krempel wird dann funktionieren,</p> <ul> <li>wenn beide Domains auf dem gleichen Server liegen</li> <li>und das Verzeichnis für die Session-Dateien identisch ist</li> <li>und Du musst Dich ggf. noch um CORS-Einträge kümmern.</li> </ul> <p>Liegen die Session-dateien nicht auf den gleichen Server muss beim Session-Transfer dafür gesorgt werden, dass die Session-Datei vom Server A zum Server B kopiert wird. Das geht mit PHP eigentlich ganz einfach.</p> <p>$sessTransferKey hat (noch) keine Bedeutung.</p> <p>A) Erzeugung der Session auf Domain A:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">#https://home.fastix.org/Tests/session_start.php</span> <span class="token variable">$serverA</span><span class="token operator">=</span><span class="token string single-quoted-string">'https://home.fastix.org'</span><span class="token punctuation">;</span> <span class="token variable">$serverB</span><span class="token operator">=</span><span class="token string single-quoted-string">'https://home.fastix.org'</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span> <span class="token function">session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">session_start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> <span class="token keyword">isset</span><span class="token punctuation">(</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'foo'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'foo'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'bar'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> <span class="token keyword">isset</span><span class="token punctuation">(</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'TransferKey'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$_SESSION</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'TransferKey'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">generateTransferKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$sessionFileName</span> <span class="token operator">=</span> <span class="token function">ini_get</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'session.save_path'</span><span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/sess_'</span> <span class="token operator">.</span> <span class="token function">session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<p>Session-ID: '</span> <span class="token operator">.</span> <span class="token function">session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</p>'</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<p>Session-File: '</span> <span class="token operator">.</span> <span class="token variable">$sessionFileName</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</p>'</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<hr><pre>'</span> <span class="token operator">.</span> <span class="token function">htmlspecialchars</span><span class="token punctuation">(</span> <span class="token function">file_get_contents</span> <span class="token punctuation">(</span> <span class="token variable">$sessionFileName</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'</pre></hr>'</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<p>Gehe zu <a href="'</span> <span class="token operator">.</span> <span class="token variable">$serverB</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/Tests/session_use.php">'</span> <span class="token operator">.</span> <span class="token variable">$serverB</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/Tests/session_use.php</a></p>'</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">generateTransferKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$blob</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token variable">$i</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator"><</span><span class="token number">160</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$blob</span> <span class="token operator">.=</span> <span class="token function">chr</span><span class="token punctuation">(</span> <span class="token function">random_int</span><span class="token punctuation">(</span> <span class="token number">1</span><span class="token punctuation">,</span><span class="token number">126</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token function">base64_encode</span><span class="token punctuation">(</span> <span class="token variable">$blob</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </span></code></pre> <p>b) "Antelefonieren" der Session von einer Seite von Domain B aus mit Javascript</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span> <span class="token comment"><!-- https://home.fastix.org/Tests/session_use.php /--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Session ID: <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sessID<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Session TransferKey: <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sessTransferKey<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Session Transfer ausgeführt: <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>TranferOK<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token keyword">var</span> xhttp <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLHttpRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> xhttp<span class="token punctuation">.</span><span class="token function-variable function">onreadystatechange</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">this</span><span class="token punctuation">.</span>readyState <span class="token operator">==</span> <span class="token number">4</span> <span class="token operator">&&</span> <span class="token keyword">this</span><span class="token punctuation">.</span>status <span class="token operator">==</span> <span class="token number">200</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> vars <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span> <span class="token keyword">this</span><span class="token punctuation">.</span>responseText <span class="token punctuation">)</span><span class="token punctuation">;</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'sessID'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> vars<span class="token punctuation">[</span><span class="token string">'sessID'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'sessTransferKey'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> vars<span class="token punctuation">[</span><span class="token string">'sessTransferKey'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">var</span> xhttp2 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLHttpRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> xhttp2<span class="token punctuation">.</span><span class="token function-variable function">onreadystatechange</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>readyState <span class="token operator">==</span> <span class="token number">4</span> <span class="token operator">&&</span> <span class="token keyword">this</span><span class="token punctuation">.</span>status <span class="token operator">==</span> <span class="token number">200</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'TranferOK'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>responseText<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> xhttp2<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span> <span class="token string">"POST"</span><span class="token punctuation">,</span> <span class="token string">"https://home.fastix.org/Tests/sessiontransfer.php"</span><span class="token punctuation">,</span> <span class="token boolean">true</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> xhttp2<span class="token punctuation">.</span><span class="token function">setRequestHeader</span><span class="token punctuation">(</span> <span class="token string">"Content-type"</span><span class="token punctuation">,</span> <span class="token string">"application/x-www-form-urlencoded"</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> data <span class="token operator">=</span> <span class="token string">'sessID='</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span> vars<span class="token punctuation">[</span><span class="token string">'sessID'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'&TransferKey='</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span> vars<span class="token punctuation">[</span><span class="token string">'sessTransferKey'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> xhttp2<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span> data <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> xhttp<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span> <span class="token string">"GET"</span><span class="token punctuation">,</span> <span class="token string">"https://home.fastix.org/Tests/sessionGetIDandTransferKey.php"</span><span class="token punctuation">,</span> <span class="token boolean">true</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> xhttp<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>C) Und zu guter Letzt die "sessiontransfer.php", für die eigentlich nur mit session_id() die frühere id zu setzen ist, der Rest geht automatisch mit session_start() - Aber nur wenn die Session-Datei vorhanden ist!</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>pre</span><span class="token punctuation">></span></span> Postdata: <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token function">print_r</span><span class="token punctuation">(</span> <span class="token variable">$_POST</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> SESSION: <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment"># Hier eventuell das Kopieren der Session-Datei von Server A nach Server B</span> <span class="token function">session_id</span><span class="token punctuation">(</span> <span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'sessID'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">session_start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">print_r</span><span class="token punctuation">(</span> <span class="token variable">$_SESSION</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>pre</span><span class="token punctuation">></span></span> </code></pre> <p>wenn Du die Session-Datei kopierst, dann musst Du ferner Sorge dafür tragen, dass im Falle einer Abmeldung das Original und alle Kopien zuverlässig zerstört (gelöscht) werden.</p> Login über zwei Domains hinweg Mon, 27 Aug 18 12:37:02 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730244#m1730244 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730244#m1730244 <p>Hallo pl,</p> <blockquote> <p>Was haben bei Dir die Zugangsdaten mit einer solchen Prüfung zu tun? Das ist doch nicht etwa alles in einer Tabelle bei Dir?</p> </blockquote> <p>doch, diese Daten stehen alle in einer Tabelle.</p> <p><a href="/images/51bf5438-82f0-4b85-b561-733135018ef1.png" rel="noopener noreferrer"><img src="/images/51bf5438-82f0-4b85-b561-733135018ef1.png?size=medium" alt="" loading="lazy"></a></p> <p>Und jetzt bitte nicht mit PERL kommen </p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Login über zwei Domains hinweg Mon, 27 Aug 18 12:49:22 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730247#m1730247 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730247#m1730247 <p>hi,</p> <blockquote> <blockquote> <p>Was haben bei Dir die Zugangsdaten mit einer solchen Prüfung zu tun? Das ist doch nicht etwa alles in einer Tabelle bei Dir?</p> </blockquote> <p>doch, diese Daten stehen alle in einer Tabelle.</p> </blockquote> <p>Es ist besser das zu trennen. 2 Tabellen: Zugangsdaten, Login. In die Logintablle gehört die SID, der Benutzername und der Zeitpunkt der Anmeldung. Falls ein Logout erfolgte, der Zeitpunkt dazu. Ansonsten hat jedes Login ein Expires.</p> <blockquote> <p>Und jetzt bitte nicht mit PERL kommen </p> </blockquote> <p>Erstens heißt das nicht PERL sondern Perl und zweitens hat das damit nichts zu tun.</p> <p>MfG</p> Login über zwei Domains hinweg Mon, 27 Aug 18 12:51:33 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730248#m1730248 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730248#m1730248 <p>Mahlzeit,</p> <blockquote> <p>doch, diese Daten stehen alle in einer Tabelle.</p> </blockquote> <p>Halte ich für ungünstig. Besser ist, du hast eine Tabelle für Userdaten und eine zusätzliche für das Sessionhandling. Das hat zum einen den Vorteil der höheren Geschwindigkeit bei richtiger, programmiertechnischer, Umsetzung zum anderen bekommt ein Angreifer weniger Daten wenn eine Tabelle kompromittiert wird.</p> <p>Früher wurde da immer von "Normalisierung" gesprochen, ob das noch stand der Technik ist und noch so genannt wird, weiss ich nicht.</p> <div class="signature">-- <br> 42 </div> Login über zwei Domains hinweg Mon, 27 Aug 18 20:13:41 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730311#m1730311 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730311#m1730311 <p>Hallo Meowsalot,</p> <p>das ist nicht nur ungünstig, sonder leider falsch modelliert.</p> <p>User und Session sind unterschiedliche und unabhängige Entitäten, die nur bei Bestehen einer festen 1:1 Beziehung in einer Tabelle gemeinsam gespeichert werden dürften. Das ist aber nicht so.</p> <p>Eine Session kann sich auf einen angemeldeten User beziehen, MUSS ABER NICHT. Es gibt genug Webseiten (z.B. bahn.de), bei denen ich anonym eine Menge tun kann und erst dann, wenn es ans Bezahlen geht, ein Login nötig wird. Ein User dagegen muss keine Session haben (wenn er abgemeldet ist), kann aber eine haben. Und er kann auch mehrere haben, wenn er auf mehreren Geräten (oder auch nur in unabhängigen Browserfenstern) unterwegs ist.</p> <p><strong>Die Beziehung zwischen User und Session ist also 1:n</strong>. Die Trennung ist deshalb unbedingt erforderlich, und die Implementierung der Relation muss so erfolgen, dass die User-Id als Fremdschlüssel in der Session-Tabelle gespeichert wird. In dieser Session-Tabelle müsste dann auch noch der Verfalls-Timestamp stehen (user_login greift nicht, wenn es parallele Sessions gibt).</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Unsicherer Ansatz: Passwörter im Klartext Mon, 27 Aug 18 13:12:47 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730251#m1730251 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730251#m1730251 <p>Mahlzeit,</p> <blockquote> <p>Weil ich in Deinem Quelltext nichts von der Bildung eines (salted) Hashes gesehen habe.</p> </blockquote> <p>hash('sha256',$_POST["passwort"].$salt);</p> <p>Da es eine Variable gibt, wird er wohl irgendwo irgendwas salzen, vermute ich mal</p> <blockquote> <p>Was auch immer das für Hashes sind (ich sehe die Länge nicht) und ich hoffe nicht, dass gar etwas umkehrbar verschlüsseltes ist),</p> </blockquote> <p>hash('sha256',$_POST["passwort"].$salt);</p> <p>da steht doch sha256, daher ist doch eindeutig, was das für Hashes sind</p> <blockquote> <p>das ist fast genau so gefährlich wie Klartextpasswörter,</p> </blockquote> <p>Jetzt übertreib mal nicht. Du sagst ja quasi dass Rainbow-Tables und BruteForce keinen Aufwand bedeuten.</p> <blockquote> <p>Teraybyte-große SSDs für <a href="https://de.wikipedia.org/wiki/Rainbow_Table" rel="nofollow noopener noreferrer">Rainbow-Tables</a> sind im Konsumer-Segment angekommen, damit geht das richtig schnell.</p> </blockquote> <p>Aha, die wissen dann also was in $salt steht? Selbst wenn da nur ein "fqawsed54t5ftgqa4" drin steht als String, kannst du jeden Rainbow-Table knicken.</p> <p>Natürlich ist es besser, gleich die richtigen Funktionen und Strukturen zu nutzen aber unnötige Panikmache halte ich da für Kontraproduktiv. Fakt ist, in den seltensten Fällen ist bei einen Hackangriff die Passwortspeicherung das Problem sondern es sind entweder völlig unsichere Passwörter oder Lücken im System, die ein Eindringen ohne Login erlauben.</p> <div class="signature">-- <br> 42 </div> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 13:27:53 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730254#m1730254 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730254#m1730254 <p>Hallo Regina,</p> <p>jetzt bleib mal bitte ganz locker. Viel schlimmer finde ich Weibseite wo ich mir mein Passwort erneut zuschicken lassen kann, die speichern die Kennwörter als Klartext in ihrer Datenbank wie es etwa lastPass macht. Bei diesem bin ich bis letzte Woche davon ausgegangen dass dieser gut ist.</p> <p>Aber jetzt zu meinem Thema, ich ändere dieses gerne wenn es der Sicherheit dient, gar keine Frage. Nur das würde bedeuten jeder User muss sich ein neues Kennwort vergeben? Oder wie würdest du dieses machen? Und kann ich meine Login Funktion weiterhin nutzen oder muss auch dieses komplett umgestellt werden?</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Keine unnötige Panikmache Mon, 27 Aug 18 13:18:25 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730252#m1730252 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730252#m1730252 <blockquote> <p>Aha, die wissen dann also was in $salt steht? Selbst wenn da nur ein "fqawsed54t5ftgqa4" drin steht als String, kannst du jeden Rainbow-Table knicken.</p> </blockquote> <p>In seinem Fall steht der Salt offensichtlich als fixer oder berechenbarer, nicht-individueller String irgendwo im Programm oder in einer Datei.</p> <p>Das Problem ist nicht der bekannte Salt, es ist, dass es für jedes Passwort wahrscheinlich der selbe ist.</p> <p>Das nächste Problem ist: Moderne Funktionen wie password_hash() machen das nicht einmal sondern salzen und hashen das Passwort mehrere tausend Mal. Aus dem einen Grund: Damit der Vorgang mehr Zeit braucht.</p> <blockquote> <p>unnötige Panikmache halte ich da für Kontraproduktiv</p> </blockquote> <p>Das ist es nicht. Der TO hat die Idee irgendwo her und dann implementiert. Es ist zu befürchten, dass irgendwer daherkommt und diese im Zeitablauf unsicher gewordene und deswegen zu verwerfende Idee auch abschreibt und für sicher hält.</p> <blockquote> <p>es sind entweder völlig unsichere Passwörter oder Lücken im System, die ein Eindringen ohne Login erlauben.</p> </blockquote> <p>Ja. Wie eben Wordpress-Plugis, welche Angreifern statt dem Upload einer Grafik die Installation einer PHP-Shell und das Abgreifen der ganzen Passwort-Datenbank erlauben.</p> Unsicherer Ansatz: Passwörter im Klartext Mon, 27 Aug 18 13:28:55 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730255#m1730255 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730255#m1730255 <p>Mahlzeit,</p> <blockquote> <p>In seinem Fall steht der Salt offensichtlich als fixer oder berechenbarer, nicht-individueller String irgendwo im Programm oder in einer Datei.</p> </blockquote> <p>Wieso? Kann genau so gut sein, dass da eine komplexe Funktion mit einer aufwändigen Berechnung ist. Abgesehen davon hebelt auch ein statischer "salt", wie gesagt, jeden Rainbow-Table aus denn wenn ein Angreifer an den Salt kommt, ist er eh so weit auf dem Server dass er an die Zugangsdaten der Datenbank kommt und auch auf den restlichen Webspace zugreifen kann. In dem Fall hat der Betreiber ganz andere Probleme als die, dass jemand extra dafür einen Rainbow-Table erzeugt um genau für diesen Salt einen zu haben.</p> <p>Im Übrigen, wenn der Hacker an einen statischen Salt kommt, kommt er auch an die Funktion wenn einer berechnet wird und wir haben den exakt gleichen Effekt.</p> <p>Wie gesagt, man sollte die vorgesehenen Funktionen nutzen, trotzdem sind andere Umsetzungen nicht pauschal unsicher.</p> <div class="signature">-- <br> 42 </div> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 13:35:34 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730256#m1730256 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730256#m1730256 <p>Mahlzeit,</p> <blockquote> <p>Aber jetzt zu meinem Thema, ich ändere dieses gerne wenn es der Sicherheit dient, gar keine Frage. Nur das würde bedeuten jeder User muss sich ein neues Kennwort vergeben?</p> </blockquote> <p>Nein, du kannst ja den Hash nochmal neu hashen, packst einen Flag in die Datenbank der dir dann sagt ob das Passwort neu ist und nur mit der neuen Funktion gehasht wird oder mit beiden weil das Passwort noch nicht geändert wurde. Nach angemessener Zeit verschickst du dann Mails an die, die ihr Passwort nicht selbst geändert haben, sie sollten das, aus Sicherheitsgründen, mal wieder machen und wenn dann alle Passwörter geflagt sind (oder inaktive User ignorierbar sind), nimmst du nur noch den neuen Hash.</p> <blockquote> <p>Oder wie würdest du dieses machen? Und kann ich meine Login Funktion weiterhin nutzen oder muss auch dieses komplett umgestellt werden?</p> </blockquote> <p>Ich würde auf vorhandene Libs aufsetzen und nix eigenes schreiben. Entweder ein Framework, das diese Funktionalität bietet oder eben was einbinden. Symfony und Laravel können das z.B. vermutlich cakePHP o.ä. auch. Libs weiss ich grad keine, da kann evtl. jemand anderer helfen.</p> <p>Der Vorteil: Eine Community löst Sicherheitsprobleme und du hast eine Sorge weniger.</p> <div class="signature">-- <br> 42 </div> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 13:56:30 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730262#m1730262 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730262#m1730262 <blockquote> <p>Nur das würde bedeuten jeder User muss sich ein neues Kennwort vergeben? Oder wie würdest du dieses machen?</p> </blockquote> <p>Das ist jetzt ein Trick.</p> <pre><code class="block">Es wird versucht das Loin mit der neuen Methode durchzuführen. Fehlschlag: Es wird versucht das Login mit der alten Methode durchzuführen. Erfolg: Das eingegebene Passwort wird mit der neuen Methode gehasht oder (besser) aber der Benutzer wird zur Eingabe eines neuen Passworts gezwungen Ab dann klappt die Neue Methode. </code></pre> <p>Auch bei der Methode mit password_verify() ist nach dem erfolgreichen(!) Login mit password_needs_rehash() zu prüfen ob der bestehende Hash dem Stand der Technik entspricht. (<a href="https://code.fastix.org/Projekte/PHP%3Alogin-system/PHP-Anwendung%20und%20Praxis-Loginsystem.pdf" rel="nofollow noopener noreferrer">Seite 4: "Ein stilles Update können Sie auch durchführen"</a>) Zu diesem Zweck ist die Methode <a href="https://en.wikipedia.org/wiki/Bcrypt#Versioning_history" rel="nofollow noopener noreferrer">im ersten Abschnitt des Hashes durch einen Code notiert</a>. Liefert password_needs_rehash() true, wird das Passwort (das eben eingegebene oder ein Neues) ebenfalls mit password_hash() neu gehascht und eingetragen.</p> <p>Dann geht's weiter wie bisher.</p> <p>Vorteil: Man muss in PHP nichts mehr umschreiben, weil die Verwendung der der "Methode auf dem Stand der Technik" im Hintergrund stattfindet. Man muss nur dafür sorgen, dass PHP seine Updates erhält.</p> <p>Das ist die Wurst, die man sich braten will.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 13:42:01 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730258#m1730258 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730258#m1730258 <blockquote> <p>Wie gesagt, man sollte die vorgesehenen Funktionen nutzen, trotzdem sind andere Umsetzungen nicht pauschal unsicher.</p> </blockquote> <p><strong>Doch. Weil diese die Sicherheit womöglich auch anderer Dienste beschädigen.</strong></p> <p>Grund:</p> <p>Kommt eine hinreichend kriminelle Person in den Besitz der Datenbank und des Salts (oder dessen Berechnung...), dann kann und wird diese diese Datenbank und den Salt verkaufen. Die Datenbank enthält einen Nickname.</p> <p>Diese Datenbank gerät nun in die Hände von weiteren, spezialiserten Kriminellen mit den technischen Möglichkeiten (oder sogar eines Geheimdienstes). Ein paar SSDs, ein paar Recheneinheiten wie sie auf Grafikkarten sind oder gar für SHA-X spezialisierte ASICs genügen um in vertretbarer Zeit die Passwörter zu den Nicknamen zu berechnen.</p> <p>Diese Daten geraten an Dritte, welche diese Kombinationen nutzen um sich bei anderen Diensten mit diesem Nickname und dem Passwort (Erzähl mir nicht, es sei der Job des Nutzers für jeden Dienst ein eigenes Passwort zu verwenden - die machen das nicht!) anzumelden oder z.B. via Google die zugehörige Mailadresse herauszufinden und dann auch Mailadresse + Passort zu versuchen.</p> <p>Und wenn das an der oder den richtigen Stelle(n) passt, dann hat die hier vorliegende, unsichere Implementation womöglich ganz wesentlich dazu beigetragen, die Existenz eines der Nutzer, vielleicht sogar des Betreibers zu vernichten.</p> <p><strong>Willst Du daran teilnehmen, in dem Du das beschönigst?</strong></p> <p>Die Umstellung auf die derzeit nicht als unsicher verpönten Methoden ist zumutbar.</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 14:44:49 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730271#m1730271 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730271#m1730271 <blockquote> <p>Ich würde auf vorhandene Libs aufsetzen und nix eigenes schreiben. Entweder ein Framework, das diese Funktionalität bietet oder eben was einbinden. Symfony und Laravel können das z.B. vermutlich cakePHP o.ä. auch.</p> </blockquote> <p><strong>Au ja. Diese beliebten Verweise <em>"gut getesteten Frameworks mit großer Community"</em>.</strong></p> <p><strong>Wordpress</strong> ist auch <em>"gut getestet"</em> und hat eine wahrhaft riesige Community.</p> <ul> <li>Und ist zugleich das wohl <strong>meistgeknackte</strong> "CMS".</li> </ul> <p>Ich vertraue in wichtigen Sicherheitsfragen solchen Frameworks genau soweit, wie ich deren Quelltext <strong>vollständig gelesen</strong> und <strong>komplett verstanden</strong>(¹) habe. Hintergrund ist, dass eben diese Frameworks auch von Webseiten benutzt wurden, deren Benutzerdatenbanken geleakt wurden.</p> <p>Das kann am Framework selbst liegen und an der fehlerhaften Implementation. Lag es an der Implementation, dann an der Dokumentation, also letztendlich doch am Framework bzw. dass es jemand verwendet hat, der es <strong>NICHT vollständig gelesen</strong> und <strong>komplett verstanden</strong>(¹) hat.</p> <hr> <p>¹) Was es <strong>jedenfalls für mich</strong> regelmäßig einfacher macht, darauf zu verzichten und <a href="https://code.fastix.org/Projekte/PHP%3Alogin-system/PHP-Anwendung%20und%20Praxis-Loginsystem.pdf" rel="nofollow noopener noreferrer"><strong>hundert Zeilen Vanilla-PHP</strong></a> zu schreiben.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 14:02:54 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730264#m1730264 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730264#m1730264 <p>Mahlzeit,</p> <blockquote> <p>**Willst Du daran teilnehmen, in dem Du das beschönigst?*×</p> </blockquote> <p>Ich beschönige nichts, ich nehme die Paranoia raus. Du redest hier von Projekten die so gross sind, dass sie für eine kriminelle Gruppierung (da schliesse ich NSA und Co. mit ein) interessant sind. Wer ein solches Projekt betreibt, fragt nicht hier im Forum wie ein Login geht.</p> <p>Und genau darum geht es, um einen User, der hier nachfragt weil er ein kleines Projekt programmiert dessen Datenbank keine Sau interessiert weil der Aufwand in keiner Relation zum Nutzen steht. Dazu müssten erstmal mehrere 100.000 Datensätze erbeutet werden.</p> <blockquote> <p>Die Umstellung auf die derzeit nicht als unsicher verpönten Methoden ist zumutbar.</p> </blockquote> <p>Das stimmt und ich habe dazu auch konkrete Vorschläge gemacht, nicht nur Paranoia verbreitet </p> <div class="signature">-- <br> 42 </div> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 14:05:50 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730265#m1730265 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730265#m1730265 <p>Mahlzeit,</p> <blockquote> <p>Vorteil: Man muss in PHP nichts mehr umschreiben, weil die Verwendung der der "Methode auf dem Stand der Technik" im Hintergrund stattfindet. Man muss nur dafür sorgen, dass PHP seine Updates erhält.</p> </blockquote> <p>Nachteil, inaktive Userpasswörter werden nie rehashed und dadurch bleibt das Login bei deinem Ansatz auf Dauer unsicher.</p> <div class="signature">-- <br> 42 </div> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 14:27:20 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730269#m1730269 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730269#m1730269 <blockquote> <p>Du redest hier von Projekten die so gross sind, dass sie für eine kriminelle Gruppierung (da schliesse ich NSA und Co. mit ein) interessant sind.</p> </blockquote> <p>Die NSA setzt ganze Rechenzentren in die Wüste und ist an jedem Datenfitzelchen interessiert. Guggst Du "Fluggastdaten".</p> <blockquote> <p>Wer ein solches Projekt betreibt, fragt nicht hier im Forum wie ein Login geht.</p> </blockquote> <p>Du. Lies mal bei heise & co. nach, von wem so alles in den letzten paar Monaten Datenbanken mit Zugangsdaten, bei denen die Passwörter mit sha1 oder gar md5 gehasht wurden, in die "Wildbahn" gerieten.</p> <p>Das sind <a href="https://t3n.de/news/leak-datenbank-login-daten-823503/" rel="nofollow noopener noreferrer">richtige große Firmen bei</a>, bei denen man eigentlich Intelligenz vermuten würde - und die hatten es eigentlich alle nötig, mal einen Typ wie mich oder hier im Forum zu fragen.</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 14:13:25 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730266#m1730266 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730266#m1730266 <blockquote> <p>Nachteil, inaktive Userpasswörter werden nie rehashed und dadurch bleibt das Login bei deinem Ansatz auf Dauer unsicher.</p> </blockquote> <p>Dieser Umstand ist auch mit jedem anderen Ansatz nicht vollautomatisch zu beheben. Lösung ist, <strong>alle oder inaktive User mit Fristsetzung zu benachrichtigen</strong>, dass wegen modernerer Sicherheitsvorkehrungen ein Login und ggf. die Änderung des Passworts nötig ist.</p> <p><strong>Wenn das nicht erfolgt muss man halt nach Fristablauf im Interesse der inaktiven Benutzer selbst deren Einträge "brutal" löschen.</strong> Das entspricht übrigens auch der DSGVO. Stichworte "Notwendigkeit, Zweckbestimmung".</p> <p>Die können sich ja neu anmelden.</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 14:25:07 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730267#m1730267 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730267#m1730267 <p>Mahlzeit,</p> <blockquote> <p>Dieser Umstand ist auch mit jedem anderen Ansatz nicht vollautomatisch zu beheben.</p> </blockquote> <p>Dann hast du meinen Post zum Thema nicht gelesen.</p> <div class="signature">-- <br> 42 </div> DSGVO Mon, 27 Aug 18 15:11:44 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730272#m1730272 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730272#m1730272 <p>Hallo Regina,</p> <p>und wie sieht es hier mit der DSGVO aus? Ich darf einem User nicht ungefragt eine eMail mit einer bitte um Passwortänderung zukommen lassen?</p> <p>Könnte teuer für mich werden, denn der User hat nie eingewilligt dass ich ihm irgendwelche Mails zuschicken darf.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Tue, 28 Aug 18 06:31:34 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730335#m1730335 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730335#m1730335 <p>Hi,</p> <blockquote> <blockquote> <p>Nachteil, inaktive Userpasswörter werden nie rehashed und dadurch bleibt das Login bei deinem Ansatz auf Dauer unsicher.</p> </blockquote> <p>Dieser Umstand ist auch mit jedem anderen Ansatz nicht vollautomatisch zu beheben. Lösung ist, <strong>alle oder inaktive User mit Fristsetzung zu benachrichtigen</strong>, dass wegen modernerer Sicherheitsvorkehrungen ein Login und ggf. die Änderung des Passworts nötig ist.</p> <p><strong>Wenn das nicht erfolgt muss man halt nach Fristablauf im Interesse der inaktiven Benutzer selbst deren Einträge "brutal" löschen.</strong> Das entspricht übrigens auch der DSGVO. Stichworte "Notwendigkeit, Zweckbestimmung".</p> </blockquote> <p>Daß bei nicht-Aktivwerden des Users dessen User-Eintrag gelöscht (bzw. gesperrt - wenn gesetzliche Regelungen die Löschung verhindern) wird, sollte in der Mail mit drinstehen.</p> <p>Und es sollte in der Mail auch die Möglichkeit geben, seinen User-Eintrag sofort löschen bzw. sperren zu lassen.</p> <p>cu,<br> Andreas a/k/a MudGuard</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 14:30:42 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730270#m1730270 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730270#m1730270 <p>Ich hab Dir auf einen bestimmten Post vollständig und mit technisch korrekten Aussagen geantwortet und diesen eingehend zitiert, damit klar ist worauf ich antworte. Aus Deinem geheimnisvollen <em>"Dann hast du meinen Post zum Thema nicht gelesen."</em> kann ich nichts entnehmen.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 16:16:50 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730277#m1730277 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730277#m1730277 <p>Mahlzeit,</p> <blockquote> <p>Das sind <a href="https://t3n.de/news/leak-datenbank-login-daten-823503/" rel="nofollow noopener noreferrer">richtige große Firmen bei</a>, bei denen man eigentlich Intelligenz vermuten würde - und die hatten es eigentlich alle nötig, mal einen Typ wie mich oder hier im Forum zu fragen.</p> </blockquote> <p>Und die wurden gehackt, weil die Passwörter nicht richtig gehashed waren? Hast du dazu ne Quelle?</p> <div class="signature">-- <br> 42 </div> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 16:24:45 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730279#m1730279 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730279#m1730279 <p>Mahlzeit,</p> <blockquote> <p>Ich hab Dir auf einen bestimmten Post vollständig und mit technisch korrekten Aussagen geantwortet und diesen eingehend zitiert, damit klar ist worauf ich antworte. Aus Deinem geheimnisvollen <em>"Dann hast du meinen Post zum Thema nicht gelesen."</em> kann ich nichts entnehmen.</p> </blockquote> <p>Sorry, ich dacte das "zum Thema" wäre ausreichen damit du weisst, ich meine meinen Post in gleicher Ebene in dem ich erklärt habe wie ich das lösen würde. Mein Fehler.</p> <div class="signature">-- <br> 42 </div> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Mon, 27 Aug 18 16:36:03 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730282#m1730282 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730282#m1730282 <p>Mahlzeit,</p> <blockquote> <p><strong>Au ja. Diese beliebten Verweise <em>"gut getesteten Frameworks mit großer Community"</em>.</strong></p> </blockquote> <p>Sorry, hab vergessen, dass es ja zig Millionen blöde Leute gibt, die diese Frameworks einsetzen und zig tausende, die Sicherheitslücken beheben. Da ist etwas, das du alleine entwickelst und nur alleine testest, viel vertrauenserweckender, da du sicher mehr Fheler findest als tausend Programmierer zusammen</p> <blockquote> <p><strong>Wordpress</strong> ist auch <em>"gut getestet"</em> und hat eine wahrhaft riesige Community.</p> <ul> <li>Und ist zugleich das wohl <strong>meistgeknackte</strong> "CMS".</li> </ul> </blockquote> <p>Wordpress ist veralteter, unbrauchbarer Codemüll. Dein Vergleich heisst für mich, dass su die Arbeit anderer generell ablehnst, aber die Systeme selbst nicht kennst.</p> <blockquote> <p>Ich vertraue in wichtigen Sicherheitsfragen solchen Frameworks genau soweit, wie ich deren Quelltext <strong>vollständig gelesen</strong> und <strong>komplett verstanden</strong>(¹) habe. Hintergrund ist, dass eben diese Frameworks auch von Webseiten benutzt wurden, deren Benutzerdatenbanken geleakt wurden.</p> </blockquote> <p>Ja, bestimmt bist du der grösste Spezialist in diesen Dingen und die Formen mit zig Programmierern, die mit genau diesen Dingen Geld verdienen, sind alles stümperhafte Idioten die besser Bäcker oder Strassenkehrer werden …</p> <blockquote> <p>Das kann am Framework selbst liegen und an der fehlerhaften Implementation. Lag es an der Implementation, dann an der Dokumentation, also letztendlich doch am Framework bzw. dass es jemand verwendet hat, der es <strong>NICHT vollständig gelesen</strong> und <strong>komplett verstanden</strong>(¹) hat.</p> </blockquote> <p>Na dann haben wir ja Glück, dass du so gut bist und nur fehlerfreien und absolut sicheren Code schreibst.</p> <p>Da du die Funktionen password_* empfiehlst, hast du dann also auch den Quellcode von PHP zumindest bei diesen Funktionen vollständig gelesen und verstanden (und dazu natürlich auch die Libs dahinter und alles für jedes Betriebssystem bis hinunter zum Kernel) denn da könnte ja überall eine Implementierung fehlerhaft sein und du kannst dem ja sonst nicht vertrauen.</p> <blockquote> <p>¹) Was es <strong>jedenfalls für mich</strong> regelmäßig einfacher macht, darauf zu verzichten und <a href="https://code.fastix.org/Projekte/PHP%3Alogin-system/PHP-Anwendung%20und%20Praxis-Loginsystem.pdf" rel="nofollow noopener noreferrer"><strong>hundert Zeilen Vanilla-PHP</strong></a> zu schreiben.</p> </blockquote> <p>Wer die Eingeweide von PHP so gut kennt, dass er genau weiss wie vorgegebene Funktionen arbeiten, hat meinen Respekt.</p> <p>Wenn du natürlich diese Funktionen blind benutzt weil du ihnen vertraust, ist das ein typisches mit zweierlei Mass messen. Einer Firma mit Community vertraust du, einer anderen nicht.</p> <p>Achja, sind ja sogar viele Communities denen du vertrauen musst um PHP, Apache, mysql/MariaDB, Linux (hier Liste unendlich weiterführen) zu nutzen aber einem PHP-Framework vertraust du nicht. Schon extrem paradox wie ich meine.</p> <div class="signature">-- <br> 42 </div> Wenn der Topf aber dieses Loch hat, dann gieß ihn aus. Mon, 27 Aug 18 15:31:46 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730273#m1730273 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730273#m1730273 <blockquote> <p>Könnte teuer für mich werden, denn der User hat nie eingewilligt dass ich ihm irgendwelche Mails zuschicken darf.</p> </blockquote> <p>Das könnte es auch so. Denn es fehlt dann an einem Zweck der Speicherung seiner Mailadresse sowie der Beschränkung auf das für die Zwecke der Verarbeitung notwendige Maß - und Du musst die Daten ohnehin löschen.</p> <p><a href="https://dsgvo-gesetz.de/art-5-dsgvo/" rel="nofollow noopener noreferrer">Art. 5 Absatz 1 Buchstabe c DSGVO</a></p> <p>Im Übrigen wäre der Mailversand in diesem Fall <em>"die erforderliche Verarbeitung zur Erfüllung einer rechtlichen Verpflichtung, der der Verantwortliche unterliegt;"</em></p> <p><a href="https://dsgvo-gesetz.de/art-6-dsgvo/" rel="nofollow noopener noreferrer">Art. 6 Absatz 1 Buchstabe c DSGVO</a></p> <p>Du hast nämlich alles zumutbare zu tun um die Daten zu schützen. Dazu kannst Du auch die Mitwirkung einverlangen.</p> DSGVO Mon, 27 Aug 18 16:22:32 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730278#m1730278 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730278#m1730278 <p>Mahlzeit,</p> <blockquote> <p>und wie sieht es hier mit der DSGVO aus? Ich darf einem User nicht ungefragt eine eMail mit einer bitte um Passwortänderung zukommen lassen?</p> </blockquote> <p>Ich weiss nicht konkret, wie das geregelt ist mir Mails, die die Account-Sicherheit betreffen. Es ist ja im Interesse des Users, dass er eine solche Mail bekommt, sie darf natürlich nicht als Werbemail ausfallen wie "Du warst so lange nicht mehr da, melde dich doch mal wieder an und kauf was". Generell hast du ja, wenn du so ein Onlineangebot betreibst, passende AGB und eine Datenschutzerklärung. Da steht dann auch entsprechend drin, ob du es darfst oder nicht.</p> <p>Wenn am Ende raus kommt, dass du keine Mail verschicken darfst, bleibt nur die Sperrung oder Löschung des Accounts, evtl. mit der Möglichkeit, dass der User ein neues Passwort anfordern kann.</p> <p>Du wirst aber nur Sicherheit haben, wenn du dazu einen Fachanwalt befragst und dir eine verbindliche, schriftliche Auskunft geben lässt.</p> <div class="signature">-- <br> 42 </div> Wenn der Topf aber dieses Loch hat, dann gieß ihn aus. Mon, 27 Aug 18 15:36:19 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730274#m1730274 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730274#m1730274 <p>Hallo Regina,</p> <p>wenn ich die Mail Adresse lösche, dann ist auch der Benutzer weg, was ja nicht sinn der Sache sein kann. Außerdem steht in den AGB dass die Mail Adresse = der Benutzername ist, also hat der User eingewilligt dass ich seine Mail Adresse speichern darf?</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Wenn der Topf aber dieses Loch hat, dann gieß ihn aus. Mon, 27 Aug 18 15:41:53 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730276#m1730276 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730276#m1730276 <blockquote> <p>wenn ich die Mail Adresse lösche, dann ist auch der Benutzer weg, was ja nicht sinn der Sache sein kann.</p> </blockquote> <p>Bei einem "inaktiven Benutzer" schon. Denn was soll denn der Zweck für die Speicherung der Daten inaktiver User sein?</p> <blockquote> <p>Außerdem steht in den AGB dass die Mail Adresse = der Benutzername ist, also hat der User eingewilligt dass ich seine Mail Adresse speichern darf</p> </blockquote> <p>Pauschal erscheint das wahrscheinlich. Aber so lange ich das gesamte Vertragswerk nicht kenne und wegen der Rechtsdienstleistungsverordnung werde ich mich hüten, den Einzelfall umfassend zu beurteilen.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 16:30:53 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730281#m1730281 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730281#m1730281 <blockquote> <blockquote> <p>Das sind <a href="https://t3n.de/news/leak-datenbank-login-daten-823503/" rel="nofollow noopener noreferrer">richtige große Firmen bei</a>, bei denen man eigentlich Intelligenz vermuten würde - und die hatten es eigentlich alle nötig, mal einen Typ wie mich oder hier im Forum zu fragen.</p> </blockquote> <p>Und die wurden gehackt, weil die Passwörter nicht richtig gehashed waren? Hast du dazu ne Quelle?</p> </blockquote> <p><strong>DAS habe ich nicht behauptet.</strong> Das allerdings die Passwörter nicht sicher gehasht wurden lässt vermuten, dass auch in anderer Hinsicht gewaltig geschlampert wurde und Typen am Werk waren, die eher auf Budgettreue, hohe Boni und fette Dividenden gesetzt haben als auf Sicherheit.</p> <p>Zudem könnten die Passwörter der Admins aus anderen Datenbanken stammen, wo diese ebenfalls im Klartext oder als schwache Hashes gespeichert waren. Das ist also wie mit den Dominosteinen.</p> DSGVO Mon, 27 Aug 18 16:29:36 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730280#m1730280 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730280#m1730280 <p>Hallo m.,</p> <p>nach Rücksprache mit meinem Anwalt soll ich wie folgt vorgesehene wenn es wirklich ein Sicherheitsrisiko darstellt:</p> <ul> <li>Passwörter in der Datenbank komplett löschen</li> <li>User gibt sein Passwort ein, es schlägt fehl, die Datenbank erkennt dass das Feld leer war</li> <li>Meldung ausgeben warum der Login nicht möglich war</li> <li>Link anbieten um Passwort neu zu vergeben</li> <li>Passwort "richtig" speichern</li> <li>Fertig</li> </ul> <p>Er meinte auch, in so einem Fall auch wenn der User keine Einwilligung gegeben hat, dürfte man ihm eine Mail schicken, da es hier um Sicherheit geht und diesem dem User nur zu gute kommt.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p> Risiko, Passwort-Reset, DSGVO Mon, 27 Aug 18 17:37:48 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730297#m1730297 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730297#m1730297 <blockquote> <p>wenn es wirklich ein Sicherheitsrisiko darstellt:</p> </blockquote> <p>Erst mal sind wir, so lange keine Anzeichen dafür vorliegen, dass die Datenbank illegal kopiert wurde, bei einem "potentiellen Risiko". Es geht also mit dem von mir vorgeschlagenen stillen Update nach dem Login. Muss aber zeitnah sein.</p> <blockquote> <ul> <li>Link anbieten um Passwort neu zu vergeben</li> </ul> </blockquote> <p>Dann musst Du aber der Gefahr entgegen wirken, dass diese Funktion durch einen Dritten missbraucht wird. "Anderer Faktor", z.B. Identifizierung per Token (gemeinsames, individuelles, nicht erratbares Geheimnis) in einem Email an seine bekannte Adresse, welches er dann wieder eingeben muss. Das wäre jedenfalls der Standardweg.</p> <blockquote> <p>Er meinte auch, in so einem Fall auch wenn der User keine Einwilligung gegeben hat, dürfte man ihm eine Mail schicken, da es hier um Sicherheit geht und diesem dem User nur zu gute kommt.</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730273#m1730273" rel="noopener noreferrer">Sowas sagte ich doch schon in Bezug auf Art. 6 Absatz 1 Buchstabe c DSGVO</a>. Es gibt im deutschen Recht auch das "Handeln ohne Auftrag" mit dem ein Schaden für den "Nichtauftraggeber" vermieden werden soll.</p> DSGVO Mon, 27 Aug 18 18:36:15 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730298#m1730298 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730298#m1730298 <p>Mahlzeit,</p> <blockquote> <ul> <li>Passwörter in der Datenbank komplett löschen</li> </ul> </blockquote> <p>Dann stell aber auch sicher, dass sich niemand mit nem leeren Passwort anmelden kann. Ich würde dann gleich Passwörter per Zufall erzeugen und entsprechend Hashen. Die Hashfunktion brauchst du eh, eine kleine Methode um nen Zufallsstring zu erzeugen ist kein Aufwand und brauchst du eh wenn du ein Passwort erzeugen willst, wenn ein User ein neues anfordert.</p> <p>Ist nur ein Bauchgefühl, dass ich ein Passwortfeld nicht leer lassen würde.</p> <blockquote> <ul> <li>User gibt sein Passwort ein, es schlägt fehl, die Datenbank erkennt dass das Feld leer war</li> </ul> </blockquote> <p>Würde trotzdem nen Flag setzen, damit du nachvollziehen kannst, wer sich ein neues Passwort schicken hat lassen. Aufgrund dieses Flags kannst du dann eine Meldung ausgeben wie "bitte neues Passwort anfordern" o.ä.</p> <blockquote> <ul> <li>Meldung ausgeben warum der Login nicht möglich war</li> <li>Link anbieten um Passwort neu zu vergeben</li> </ul> </blockquote> <p>genau dieses. Deshalb der Flag, damit die Meldung nur Leute kriegen, die kein neues Passwort vergeben.</p> <blockquote> <ul> <li>Passwort "richtig" speichern</li> <li>Fertig</li> </ul> <p>Er meinte auch, in so einem Fall auch wenn der User keine Einwilligung gegeben hat, dürfte man ihm eine Mail schicken, da es hier um Sicherheit geht und diesem dem User nur zu gute kommt.</p> </blockquote> <p>So würde ich das auch sehen aber ich bin kein Jurist </p> <div class="signature">-- <br> 42 </div> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 16:40:20 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730283#m1730283 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730283#m1730283 <p>Mahlzeit,</p> <blockquote> <p><strong>DAS habe ich nicht behauptet.</strong> Das allerdings die Passwörter nicht sicher gehasht wurden lässt vermuten, dass auch in anderer Hinsicht gewaltig geschlampert wurde und Typen am Werk waren, die eher auf Budgettreue, hohe Boni und fette Dividenden gesetzt haben als auf Sicherheit.</p> </blockquote> <p>Also nimmst du irgendeine Schlagzeile als Argument obwohl das absolut am Thema vorbei geht? Dann gehst du diese Firmen persönlich an weil echte Argumente fehlen?</p> <p>Sorry, das ist Kindergarten. Wenn du ein Argument bringen willst, dann eins, dass deine Paranoia-Aussagen zum Thema erklärt.</p> <p>Als nächstes kommt dann "Alle Seile müssen verboten werden denn viele Leute erschiessen sich. Wenn aber Seile verboten werden, können sich schon mal einige nicht mehr aufhängen"</p> <div class="signature">-- <br> 42 </div> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 16:47:44 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730285#m1730285 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730285#m1730285 <blockquote> <blockquote> <p><strong>DAS habe ich nicht behauptet.</strong> Das allerdings die Passwörter nicht sicher gehasht wurden lässt vermuten, dass auch in anderer Hinsicht gewaltig geschlampert wurde und Typen am Werk waren, die eher auf Budgettreue, hohe Boni und fette Dividenden gesetzt haben als auf Sicherheit.</p> </blockquote> <p>Also nimmst du irgendeine Schlagzeile als Argument obwohl das absolut am Thema vorbei geht?</p> </blockquote> <p>Ich? Nein. Du solltest erst mal ALLES lesen. Denn ich habe weiter geschrieben:</p> <blockquote> <blockquote> <p>Zudem könnten die Passwörter der Admins aus anderen Datenbanken stammen, wo diese ebenfalls im Klartext oder als schwache Hashes gespeichert waren. Das ist also wie mit den Dominosteinen.</p> </blockquote> </blockquote> <p>Fällt der Erste kippen dann der Reihe nach die anderen. Mit sicheren Hashes (das ist das, was ich fordere) kann man diese Kippfolge unterbrechen.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 16:50:06 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730286#m1730286 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730286#m1730286 <p>Mahlzeit,</p> <blockquote> <p>Fällt der Erste kippen dann der Reihe nach die anderen. Mit sicheren Hashes (das ist das, was ich fordere) kann man diese Kippfolge unterbrechen.</p> </blockquote> <p>Es kann aber auch sein, dass ein Whistleblower die Datenbank direkt vom Server gezogen hat und dann verkauft. Willst du jetzt verbieten, dass ein Mensch Zugriff auf den Server hat?</p> <p>Mit irgendwelchen Vermutungen Paranoia zu begründen halte ich mindestens für fragwürdig.</p> <div class="signature">-- <br> 42 </div> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 17:00:34 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730288#m1730288 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730288#m1730288 <p>Mahlzeit,</p> <blockquote> <p>Fällt der Erste kippen dann der Reihe nach die anderen. Mit sicheren Hashes (das ist das, was ich fordere) kann man diese Kippfolge unterbrechen.</p> </blockquote> <p>Verdammt, dann wäre das mit NAG Datacenter AG bestimmt nicht passiert, wenn sie alle ihre Passwörter richtig gehashed hätten.</p> <p>Ich hatte einen Server bei 1st-housing. Diese Firma wurde von der NAG Datacenter AG übernommen. In einer Nacht- und Nebelaktion wurden alle Server auf Lastwagen verladen, also das komplette Rechenzentrum ausgeräumt. Dürften mehrere Milliarden Kunden-Datensätze aus zig tausenden Projekten gewesen sein.</p> <p>Naja, hätten die alle ihre PHP-Passwörter richtig gehashed, wären die Server sicher alle noch da und nicht bis heute unauffindbar.</p> <p>Ok, wenn ich das lese, muss ich dir recht geben, dass das richtige Hashen von Passwörtern in einer PHP-Anwendung alles hätte verhindern können </p> <div class="signature">-- <br> 42 </div> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 16:57:35 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730287#m1730287 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730287#m1730287 <blockquote> <blockquote> <p>Fällt der Erste kippen dann der Reihe nach die anderen. Mit sicheren Hashes (das ist das, was ich fordere) kann man diese Kippfolge unterbrechen.</p> </blockquote> </blockquote> <blockquote> <p>Es kann aber auch sein, dass ein Whistleblower die Datenbank direkt vom Server gezogen hat und dann verkauft.</p> </blockquote> <p>Das hat aber zwei Ursachen:</p> <ol> <li><strong>Sicher gehasht hätte die Datenbank keinen Wert, der Antrieb würde entfallen. Sowas kauft doch keiner.</strong> Es sei denn jemand denkt sehr langfristig (z.B. Geheimdienste)</li> <li>Whistleblower sind was ganz anderes. Solche Datenbanken verticken Mitarbeiter, die regelmäßig sehr unzufrieden über den Umgang des Unternehmens mit sich und oder anderen Mitarbeitern sind. Den fairen und angemessenen Umgang mit Mitarbeitern haben die für die IT Verantwortlichen merkwürdigerweise oft nicht auf dem Schirm. Dafür ist <a href="https://de.wikipedia.org/wiki/Taylorismus#Taylorismuskritik_im_Einzelnen" rel="nofollow noopener noreferrer">Taylorismus</a> stark verbreitet, was freilich kein Geschäftsführer oder Aussichtsrat je durch seinen Pressesprecher zugeben wird.</li> </ol> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 17:05:39 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730289#m1730289 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730289#m1730289 <p>Mahlzeit,</p> <blockquote> <ol> <li><strong>Sicher gehasht hätte die Datenbank keinen Wert, der Antrieb würde entfallen. Sowas kauft doch keiner.</strong> Es sei denn jemand denkt sehr langfristig (z.B. Geheimdienste)</li> </ol> </blockquote> <p>Kundendaten haben keinen Wert? In welcher Welt lebst du eigentlich? Eine Datenbank mit Namen, Telefonnummern, Adresse, Kaufverhalten … die kann Millionen wert sein. Langsam solltest du aufhören denn offensichtlich fehlt dir hier einiges an Wissen zum Thema</p> <p>was Punkt 2. soll, verstehe ich nicht denn auch wenn du jetzt die Schuld am "blowen" irgendjemand zuschiebst, wird es deshalb auch nicht besser also wieso versuchst du so ein Verhalten zu rechtfertigen?</p> <div class="signature">-- <br> 42 </div> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 17:09:23 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730290#m1730290 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730290#m1730290 <p>Welche Reaktion erwartest Du?</p> <p>Warum versuchst Du das gesehene Problem mit unsicheren Hashing der Passwörter trotz meiner sachlichen und logischen Argumente zu verniedlichen und durch fachlich und sachlich völlig neben der Spur liegende Aussagen ins Lächerliche zu tun?</p> <p>Übrigens: <strong>Gerade der von Dir behauptete Umstand, dass da in einer Nacht- und Nebelaktion Server verschwunden seien, zeigt doch überdeutlich, dass das sichere Hashen wichtig ist</strong>. Denn wenn die nicht sicher gehasht waren, besteht die Möglichkeit, das Dritte jetzt Benutzernamen und Mailadresse haben und die Klartextpasswörter ermitteln konnten und das dadurch jetzt andere Dienste gefährdet sind.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 17:21:34 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730293#m1730293 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730293#m1730293 <blockquote> <p>Kundendaten haben keinen Wert?</p> </blockquote> <p>Hier geht's erstmal nur um Passwörter. Die Kundendaten auch bei Dritten zu klauen wird durch die unsicher gehashten Passwörter erst möglich:</p> <p><strong>Für Dich jetzt mal GANZ deutlich:</strong></p> <ol> <li>Nehmen wir mal an, ich und andere würden sich hier im Forum mit Mailadresse und Passwort anmelden.</li> <li>Nehmen wir an, die Tabelle mit Mailadresse und Passwort gerät in die "Wildbahn".</li> <li>Nehmen wir jetzt an, das Passwort wäre unsicher gehasht.</li> <li>Dann kann jemand das Passwort errechnen.</li> <li>Er kann versuchen das bei Amazon und meinem Mailaccount zu benutzen.</li> <li>Jetzt nehmen wir an, ich sei ein Trottel und würde das machen, was viele machen: "Ein Passwort für alles."</li> <li>Er bestellt auf meine Rechnung bei Amazon einen Haufen Zeug und lässt sich das an eine Postbox schicken. Die Benachrichtigungen von Amazon bekommt nur er selbst, weil er das Passwort meines Mailkontos geändert hat und ich deshalb nicht mitbekomme, dass überhaupt Mails ankommen.</li> <li>Dann ich ich arm und er reicher.</li> <li>Und jetzt nehmen wir mal an, ich wäre ein so doofer Admin, dass das Passwort auch noch bei AWS-Konto passt.</li> <li>Dann hat er gleich die nächste Datenbank mit benutzernamen und Passwörtern. Und alles könnte bei 3 wieder losgehen, wenn ich die Passwörter so unsicher gehasht hätte.</li> </ol> <p>Kannst Du mir folgen oder sind das ein paar Schritte zu viel?</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 17:17:53 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730292#m1730292 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730292#m1730292 <p>Mahlzeit,</p> <blockquote> <p>Welche Reaktion erwartest Du?</p> </blockquote> <p>Dass du endlich schnallst, dass bei Kundendaten bzw. deren unerlaubten Veräusserung, das Passwort scheiss egal ist.</p> <blockquote> <p>Warum versuchst Du das gesehene Problem mit unsicheren Hashing der Passwörter trotz meiner sachlichen und logischen Argumente zu verniedlichen und durch fachlich und sachlich völlig neben der Spur solche Aussagen ins Lächerliche zu tun?</p> </blockquote> <p>Wow, du scheinst wirklich in einer anderen Sphäre zu schweben. Ich versuche dir klarzumachen, dass du Paranoia schiebst zu einem Thema das nur in ausnahmefällen relevant ist. Glaubst du wirklich, NSA & Co. haben es nötig, Passwörter von Usern zu sammeln? Die holen sich die Daten direkt aus der entsprechenden Datenbank und versuchen nicht ein bisschen mit Rumspielen zufällig nen Dienst zu erwischen bei dem das Passwort passen könnte. Die Zielgruppe für solche Daten ist extrem gering und daher sind nur Daten relevant die sich effektiv rentieren. Weiterhin sind deine Argumente in den wenigsten Fällen logisch und ich habe auch das Problem nie verniedlicht.</p> <p>Du behauptest aber dass das Hashen von Passwörtern alle Sicherheitsprobleme löst und die restlichen Kundendaten keinen Wert haben und das ist, mit Verlaub, Schwachsinn</p> <blockquote> <p>Übrigens: Gerade der von Dir behauptete Umstand, dass da in einer Nacht- und Nebelaktion Server verschwunden seien, zeigt doch überdeutlich, dass das sichere Hashen wichtig ist. Denn wenn die nicht sicher gehasht waren, besteht die Möglichkeit, das Dritte jetzt Benutzernamen und Mailadresse haben und die Klartextpasswörter ermitteln konnten und das dadurch jetzt andere Dienste gefährdet sind.</p> </blockquote> <p>Ja, wie gesagt, die Passwörter sind sicher das Wichtige, nicht die personenbezogenen Daten die immer(!) im Klartext vorhanden sind. So ein Rechenzetrum kann zig Millionen bis Milliarden wert sein. Wenn da nur ein gut laufender Onlineshop dabei ist, geht es um nen zweistellingen Millionenbetrag und denen gehen die Passwörter soweit am Arsch vorbei, so gross ist das Universum nicht.</p> <p>Also komm in die Realität und hör auch dich irgendwo fest zu fahren und andere Gefahren, die mindestens genau so problematisch sind, zu ignorieren.</p> <div class="signature">-- <br> 42 </div> Grobe Unsachlichkeiten: Ich beende die Diskussion Mon, 27 Aug 18 17:26:54 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730294#m1730294 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730294#m1730294 <blockquote> <p>Wow, du scheinst wirklich in einer anderen Sphäre zu schweben. Ich versuche dir klarzumachen, dass du Paranoia schiebst zu einem Thema das nur in ausnahmefällen relevant ist.</p> </blockquote> <p>Um zu vermeiden, dass wir uns morgen früh auf einer heimeligen Lichtung im zarten Frühnebel mit scharfen Säbeln in den Händen gegenüber stehen, beende ich die von Dir <strong>nicht erst jetzt unsachlich</strong> geführte Diskussion.</p> "nicht pauschal unsicher"? - Nicht ausreichendes Problembewusstsein! Mon, 27 Aug 18 17:27:59 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730295#m1730295 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730295#m1730295 <p>Mahlzeit,</p> <p>lassen wir es gut sein. Du willst nicht wissen was ich dir sage, Argumente ignorierst du und jetzt wirst du auch noch pampig. Sorry, aber wer nichts lernen will, soll es bleiben lassen.</p> <p>BTW: Du bist mehrfach massiv vom Thema abgewichen, willst mich aber mit Fettschrift dafür rügen, dass ich das Thema ausgeweitet hab, obwohl diese Ausweitung zum grundthema "Sicherheit" gehört. Deine Abweichungen vom Thema hatten nur den Sinn, deine "Argumente" zu konstruieren damit du nicht zugeben musst, dass auch andere recht haben könnten.</p> <p>Den Thread an sich finde ich aber sehr interessant, hoffe der landet im Archiv.</p> <div class="signature">-- <br> 42 </div> Grobe Unsachlichkeiten: Ich beende die Diskussion Mon, 27 Aug 18 17:30:57 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730296#m1730296 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730296#m1730296 <p>Mahlzeit,</p> <blockquote> <p>die von Dir <strong>nicht erst jetzt unsachlich</strong> geführte Diskussion.</p> </blockquote> <p>Den Abschluss finde ich geil von dir nachdem du gefühlt 25x das Thema gewechselt hast und ich dich wieder zurück zum Thema gezwungen hab </p> <div class="signature">-- <br> 42 </div> Login über zwei Domains hinweg Tue, 28 Aug 18 05:58:56 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730332#m1730332 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730332#m1730332 <p>Moin,</p> <p>ein Login muss nicht unbedingt ins relationale DBMS. Es genügt, den Login (Benutzername, Gruppe, Anmeldezeitpunkt) in der Sessiondatei zu speichern. So hat diese Datei auch selbst ein Verfallsdatum und ein Logout beschränkt sich darauf, den Eintrag zu löschen.</p> <p>Eine DB ist nur dann erforderlich, wenn über die Logins ein Protokoll zu führen ist. Und auch dann gibt es keinerlei Beziehung zwischen den Tabellen Zugangsadten und Login, der Begriff der Normalisierung ist da völlig fehl am Platze.</p> <p>MfG</p> Login über zwei Domains hinweg Tue, 28 Aug 18 11:03:12 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730349#m1730349 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730349#m1730349 <p>Hallo pl,</p> <p>ok, da hast Du recht.</p> <p>Meine (Uralt-)PHP Anwendung, die ich betreuen „darf“, hat eine Session-Table und einen SQL Session Handler, da war ich wohl zu sehr drauf fixiert.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Login über zwei Domains hinweg Thu, 30 Aug 18 07:10:27 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730586#m1730586 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730586#m1730586 <blockquote> <p>ein Login muss nicht unbedingt ins relationale DBMS.</p> </blockquote> <p>Muss nicht, <em>kann</em> aber vorteilhaft sein.</p> <blockquote> <p>Eine DB ist nur dann erforderlich, wenn über die Logins ein Protokoll zu führen ist.</p> </blockquote> <p>z.B. bei einer Serverfarm im Load-Balancing <em>kann</em> das ebenfalls nützlich sein. Wobei man dann vermutlich so etwas wie memcached vorziehen wird.</p> Unsichere Passwort-Hasches: Mit sowas landet man in der Zeitung Tue, 28 Aug 18 13:39:40 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730368#m1730368 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730368#m1730368 <blockquote> <p>Daß bei nicht-Aktivwerden des Users dessen User-Eintrag gelöscht (bzw. gesperrt - wenn gesetzliche Regelungen die Löschung verhindern) wird, sollte in der Mail mit drinstehen.</p> </blockquote> <p>Klare Sache.</p> <blockquote> <p>Und es sollte in der Mail auch die Möglichkeit geben, seinen User-Eintrag sofort löschen bzw. sperren zu lassen.</p> </blockquote> <p>Das auch. Ob Löschen oder Sperren will übrigens - von vorn herein - gut überlegt sein.</p> Experiment: Sessiontransfer Tue, 28 Aug 18 09:16:21 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730346#m1730346 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730346#m1730346 <p>Achso.</p> <p>Rufe danach auf Server B die sessionTest.php auf:</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>pre</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment"># sessionTest.php</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'ID:'</span> <span class="token operator">.</span> <span class="token variable">$session_id</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string double-quoted-string">"\n"</span><span class="token punctuation">;</span> <span class="token function">session_start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">print_r</span><span class="token punctuation">(</span> <span class="token variable">$_SESSION</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> </span></code></pre> <p>Die sollte die gleiche ID, den TransferKey und foo (beide mit Wert) beinhalten. Dann hat das geklappt.</p> Experiment: Sessiontransfer Wed, 29 Aug 18 13:12:43 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730428#m1730428 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730428#m1730428 <p><a href="/users/7192" class="mention registered-user" rel="noopener noreferrer">@Meowsalot</a></p> <p>Melde Dich mal, ich würde schon gern wissen, ob Du den Sessiontransfer implementieren konntest. (Oder was nicht geklappt hat.) Der dient nämlich genau Deinem genannten Ziel des Logins auf einer der Domains.</p> Login über zwei Domains hinweg Thu, 30 Aug 18 07:35:24 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730594#m1730594 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730594#m1730594 <p>hi <a href="/users/6547" class="mention registered-user" rel="noopener noreferrer">@Rolf B</a></p> <p>die Sessions organisieren ist freilich eine interessante Geschichte um nicht zu sagen eine Herausforderung. Also ich mache das so:</p> <pre><code class="block language-perl"> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$sid</span><span class="token punctuation">)</span><span class="token punctuation">{</span> tie <span class="token variable">%SESSION</span><span class="token punctuation">,</span> <span class="token string">'SessionFile'</span><span class="token punctuation">,</span> file <span class="token operator">=></span> <span class="token variable">$sid</span> <span class="token operator">or</span> <span class="token keyword">die</span> <span class="token variable">$@</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>und später wird %SESSION zu einer Eigenschaft der FWinstanz. So landet der Adminlogin, sofern erfolgreich in %SESSSION</p> <pre><code class="block language-perl"> <span class="token comment"># Credentials OK ab hier</span> <span class="token variable">$self</span><span class="token operator">-></span><span class="token punctuation">{</span>SESSION<span class="token punctuation">}</span><span class="token punctuation">{</span>LOGINTAB<span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token punctuation">{</span> group <span class="token operator">=></span> <span class="token string">'admin'</span><span class="token punctuation">,</span> user <span class="token operator">=></span> <span class="token variable">$user</span><span class="token punctuation">,</span> ts <span class="token operator">=></span> time<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Und da %SESSION an eine Klasse gebunden ist, können Methoden aufgerufen werden wie z.B. das Speichern:</p> <pre><code class="block language-perl">tied<span class="token punctuation">(</span><span class="token variable">%</span><span class="token punctuation">{</span><span class="token variable">$self</span><span class="token operator">-></span><span class="token punctuation">{</span>SESSION<span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-></span>write<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>womit der Login persistiert wird. Und jetzt kommt der eigentliche Hack: die Klasse <code>SessionFile</code> ist austauschbar. Und damit auch der Speicherort.</p> <p>MfG</p> Experiment: Sessiontransfer Wed, 29 Aug 18 17:50:11 Z https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730481#m1730481 https://forum.selfhtml.org/self/2018/aug/27/login-ueber-zwei-domains-hinweg/1730481#m1730481 <p>Hallo Regina,</p> <p>ich würde mich am Wochenende damit beschäftigen. Muss meine Internetseite mit dem neuen Design fertig bekommen. Hoffen dieses ist OK für dich.</p> <p>Bis bald!<br> Meowsalot (Bernd)</p>