tag:forum.selfhtml.org,2005:/self Sicherer Javascript Passwortschutz ?! – SELFHTML-Forum 2010-03-26T15:40:42Z https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434127#m1434127 SimonSSS simon@simodan.de 2010-03-12T16:38:08Z 2010-03-12T16:38:08Z Sicherer Javascript Passwortschutz ?! <p>Hallo Leute,</p> <p>auf so ziemlich jeder Website, die sich mit Javascript oder HTML befasst steht, dass es keinen sicheren Javascript Passwortschutz gibt. Allerdings glaube ich eine Möglichkeit gefunden zu haben einen sicheren Javascript Passwortschutz zu erstellen. Bitte sagt mir, was ihr davon haltet:</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 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>title</span><span class="token punctuation">></span></span>Login für Privatbereich<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</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 attr-name">language</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>javascript<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>md5.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></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>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token keyword">function</span> <span class="token function">Passwortabfrage</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//Wird bei "LOGIN" aufgerufen </span> text <span class="token operator">=</span> document<span class="token punctuation">.</span>login<span class="token punctuation">.</span>username<span class="token punctuation">.</span>value<span class="token operator">+</span><span class="token string">"*"</span><span class="token operator">+</span>document<span class="token punctuation">.</span>login<span class="token punctuation">.</span>password<span class="token punctuation">.</span>value<span class="token punctuation">;</span> <span class="token comment">//Beschreibt die Eingabe in "Benutzername"*"Passwort" </span> etext <span class="token operator">=</span> <span class="token function">md5</span><span class="token punctuation">(</span>text<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Die Eingabe wird in MD5 umgewandelt </span> ttext <span class="token operator">=</span> <span class="token string">"02b07ac94ccfc3cfca9d8ece4544ac97"</span><span class="token punctuation">;</span> <span class="token comment">//Die richtige mit MD5 verschlüsselte Kombination in der Form "richtiger Benutzername"*"richtiges Passwort" </span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>etext <span class="token operator">!=</span> ttext<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>location<span class="token punctuation">.</span>href <span class="token operator">=</span> <span class="token string">"http://www.beispiel.de/error401.html"</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> a <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">8</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 comment">// erzeugt eine Zahl zwischen 9 und 1 </span> <span class="token keyword">var</span> b <span class="token operator">=</span> <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><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><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><span class="token punctuation">(</span>a<span class="token operator">+</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">23</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">85</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">16</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">8</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">7</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">70</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">99</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">12345</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">852</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">741236985</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">8426</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">666</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token number">951235786248951368742685135497265</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// erzeugt eine Kompliziert erstellte Zahl b </span> document<span class="token punctuation">.</span>location<span class="token punctuation">.</span>href <span class="token operator">=</span> <span class="token string">"privat.html?"</span><span class="token operator">+</span>a<span class="token operator">+</span>b<span class="token punctuation">;</span> <span class="token comment">// Springt auf die Seite mit Übergabe der ombination um </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>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>div</span> <span class="token attr-name">align</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>center<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>b</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>font</span> <span class="token attr-name">color</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#000088<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>20<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Bitte geben Sie das Passwort und den Benutzernamen ein.<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>font</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>b</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>login<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>b</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>font</span> <span class="token attr-name">color</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#550000<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Benutzername:<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>font</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>b</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>username<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>20</span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>20</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>b</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>font</span> <span class="token attr-name">color</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#550000<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Passwort:<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>font</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>b</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>password<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>password<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>20</span> <span class="token attr-name">maxlength</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span>20</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token special-attr"><span class="token attr-name">onClick</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">Passwortabfrage</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 boolean">true</span><span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>button<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>submitbtn<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Login<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>form</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</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>html</span><span class="token punctuation">></span></span> </code></pre> <p>In der privat.html steht dann:</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 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>title</span><span class="token punctuation">></span></span>Privatbereich<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</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 attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token keyword">function</span> <span class="token function">Geheim</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//ist die Abfrage, nach der richtigen Übergabe in der URL </span> <span class="token keyword">var</span> übernahme <span class="token operator">=</span> document<span class="token punctuation">.</span>location<span class="token punctuation">.</span>href<span class="token punctuation">;</span> <span class="token keyword">var</span> übergabe <span class="token operator">=</span> übernahme<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> a <span class="token operator">=</span> übernahme<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>übergabe <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span> übergabe <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> b <span class="token operator">=</span> übernahme<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>übergabe <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">,</span> übergabe <span class="token operator">+</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>a <span class="token operator">!=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><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><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><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><span class="token punctuation">(</span><span class="token punctuation">(</span>b<span class="token operator">/</span><span class="token number">951235786248951368742685135497265</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">666</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">8426</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">741236985</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">852</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">12345</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">99</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">70</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">7</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">16</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">85</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">23</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>location<span class="token punctuation">.</span>href <span class="token operator">=</span> <span class="token string">"http://www.simodan.de/errors/error401.html"</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>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 special-attr"><span class="token attr-name">onload</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">Geheim</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span><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>h1</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>font</span> <span class="token attr-name">color</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#000088<span class="token punctuation">"</span></span> <span class="token attr-name">size</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>20<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Sie haben es geschafft ! Diese Einträge sind privat !<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>font</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</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>html</span><span class="token punctuation">></span></span> </code></pre> <p>Diese Codes werden dann verschlüsselt, soddas sie so aussehen:<br> login.html:</p> <pre><code class="block language-javascript"> <span class="token operator"><</span>script<span class="token operator">></span>v<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">;</span> x<span class="token operator">=</span><span class="token string">"!Glxqp!I)4H)4E)4=!Glieh!I)4H)4E)4=)4=!Gxmxpi!IPskmr*4j)JGv*4Tvmzexfivimgl!G*Jxmxpi!I*4)4H)4E)4=)4=!Gwgvmtx*4perkyeki!H*6nezewgvmtx*6*4wvg!H*6qh92nw*6!I!G*Jwgvmtx!I)4H)4E)4=)4=!Gwgvmtx*4x}ti!H*6xi|x*Jnezewgvmtx*6!I)4H)4E)4H)4E)4=)4=)4=jyrgxmsr*4Teww{svxefjveki*#*=*4);F*4*J*J[mvh*4fim*4*6PSKMR*6*4eyjkivyjir*4)4H)4E)4H)4E)4=)4=)4=*4*4xi|x*4!H*4hsgyqirx2pskmr2ywivreqi2zepyi*F*6*E*6*Fhsgyqirx2pskmr2teww{svh2zepyi!F*4*J*JFiwglvimfx*4hmi*4Imrkefi*4mr*4*6Firyx~ivreqi*6*E*6Teww{svx*6)4H)4E)4H)4E)4=)4=)4=*4*4ixi|x*4!H*4qh9*#xi|x*=!F*4*J*JHmi*4Imrkefi*4{mvh*4mr*4QH9*4yqki{erhipx)4H)4E)4H)4E)4=)4=)4=*4*4xxi|x*4!H*4*646f4;eg=8ggjg7gjge=h#igi8988eg=;*6!F*4*J*JHmi*4vmglxmki*4qmx*4QH9*4zivwglp)JGwwipxi*4Osqfmrexmsr*4mr*4hiv*4Jsvq*4*6vmglxmkiv*4Firyx~ivreqi*6*E*6vmglxmkiw*4Teww{svx*6)4H)4E)4H)4E)4=)4=)4=*4*4mj*4*#*#ixi|x*4*5!H*4xxi|x*=*=*4);F)4H)4E)4H)4E)4=)4=)4=*4*4*4*4*4hsgyqirx2psgexmsr2lvij*4!H*4*6lxxt!E*J*J{{{2fimwtmip2hi*Jivvsv8452lxqp*6*4)4H)4E)4=)4=)4=*4*4*4*4);H*4ipwi*4);F)4H)4E)4=)4=)4=)4=zev*4e*4!H*4Qexl2vsyrh*#*#Qexl2verhsq*#*=*4*E*4#*=*4*F*45*=!F*4*J*J*4iv~iykx*4imri*4^elp*4~{mwglir*4=*4yrh*45)4H)4E)4=)4=)4=)4=zev*4f*4!H*4*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#e*F54*=*E7*=*F67*=*E#9*=16*=*E5:*=*F#*=*E;*=1;4*=*E==*=*F56789*=*E#96*=*F;8567:=#9*=*E#86:*=*F:::*=*E=95679;#:68#=957:#;86:#95798=;6:9*=!F*4*J*J*4iv~iykx*4imri*4Osqtpm~mivx*4ivwxippxi*4^elp*4f)4H)4E)4=)4=)4=*4*4*4*4*4*4hsgyqirx2psgexmsr2lvij*4!H*4*6tvmzex2lxqp!J*6*Fe*Ff!F*4*J*J*4Wtvmrkx*4eyj*4hmi*4Wimxi*4qmx*4)HGfivkefi*4hiv*4sqfmrexmsr*4yq)4H)4E)4=)4=)4=*4*4);H)4H)4E)4=)4=)4=);H)4H)4E)4H)4E)4=)4=!G*Jwgvmtx!I*4)4H)4E)4=!G*Jlieh!I)4H)4E)4=!Gfsh}!I*4)4H)4E)4H)4E)4=*4*4*4*4*4*4*4*4!Ghmz*4epmkr!H*6girxiv*6!I)4H)4E)4=)4=!Gf!I!Gl5!I!Gjsrx*4gspsv!H*6*74444##*6*4wm~i!H*664*6!IFmxxi*4kifir*4Wmi*4hew*4Teww{svx*4yrh*4hir*4Firyx~ivreqir*4imr2!G*Jjsrx!I!G*Jl5!I!G*Jf!I)4H)4E)4=)4=!Gjsvq*4reqi!H*6pskmr*6!I)4H)4E)4=)4=!Gf!I!Gjsrx*4gspsv!H*6*7994444*6*4wm~i!H*68*6!IFiryx~ivreqi!E!G*Jjsrx!I!G*Jf!I)4H)4E)4=)4=!Gmrtyx*4x}ti!H*6xi|x*6*4reqi!H*6ywivreqi*6*4wm~i!H64*4qe|pirkxl!H64!I!Gfv!I)4H)4E)4=)4=!Gf!I!Gjsrx*4gspsv!H*6*7994444*6*4wm~i!H*68*6!ITeww{svx!E!G*Jjsrx!I!G*Jf!I)4H)4E)4=)4=!Gmrtyx*4x}ti!H*6teww{svh*6*4reqi!H*6teww{svh*6*4wm~i!H64*4qe|pirkxl!H64!I!Gfv!I)4H)4E)4=)4=!Gmrtyx*4srGpmgo!H*6Teww{svxefjveki*#*=!F*4vixyvr*4xvyi!F*6*4x}ti!H*6fyxxsr*6*4reqi!H*6wyfqmxfxr*6*4zepyi!H*6Pskmr*6!I)4H)4E)4=)4=!G*Jjsvq!I)4H)4E)4=)4=!G*Jhmz!I)4H)4E)4=!G*Jfsh}!I)4H)4E!G*Jlxqp!I)4H)4E"</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"-"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">">"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"#"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">"<"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"!"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">")7"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"*"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">")6"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span><span class="token number">2868</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> y<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">charCodeAt</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span> z<span class="token operator">=</span>y<span class="token operator">-</span><span class="token number">4</span><span class="token punctuation">;</span> w<span class="token operator">=</span>String<span class="token punctuation">.</span><span class="token function">fromCharCode</span><span class="token punctuation">(</span>z<span class="token punctuation">)</span><span class="token punctuation">;</span> v<span class="token operator">=</span>v<span class="token operator">+</span>w<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> document<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token function">unescape</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span><span class="token punctuation">;</span> </code></pre> <p>und privat.html:</p> <pre><code class="block language-javascript"> <span class="token operator"><</span>script<span class="token operator">></span>v<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">;</span> x<span class="token operator">=</span><span class="token string">"!Glxqp!I)4H)4E)4=!Glieh!I)4H)4E)4=)4=!Gxmxpi!ITvmzexfivimgl!G*Jxmxpi!I)4H)4E)4=)4=!Gwgvmtx*4x}ti!H*6xi|x*Jnezewgvmtx*6!I)4H)4E)4H)4E)4=)4=)4=jyrgxmsr*4Kilimq*4*#*=*4);F*4*J*Jmwx*4hmi*4Efjveki*G*4regl*4hiv*4vmglxmkir*4)HGfivkefi*4mr*4hiv*4YVP)4H)4E)4H)4E)4=)4=)4=zev*4)JGfivrelqi*4!H*4hsgyqirx2psgexmsr2lvij!F)4H)4E)4=)4=)4=zev*4)JGfivkefi*4!H*4)JGfivrelqi2mrhi|Sj*#*6!J*6*=!F)4H)4E)4=)4=)4=zev*4e*4!H*4)JGfivrelqi2wyfwxvmrk*#)JGfivkefi*4*F*45*G*4)JGfivkefi*4*F*46*=!F)4H)4E)4=)4=)4=zev*4f*4!H*4)JGfivrelqi2wyfwxvmrk*#)JGfivkefi*4*F*46*G*4)JGfivkefi*4*F*4544*=!F)4H)4E)4H)4E)4=)4=)4=mj*4*#e*4*5!H*4Qexl2vsyrh*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#f*J=95679;#:68#=957:#;86:#95798=;6:9*=1:::*=*J#86:*=1;8567:=#9*=*J#96*=156789*=*J==*=*F;4*=*J;*=1#*=*J5:*=*F6*=*J#9*=167*=*J7*=154*=*=*=*4);F)4H)4E)4=)4=)4=*4*4*4hsgyqirx2psgexmsr2lvij*4!H*4*6lxxt!E*J*J{{{2wmqsher2hi*Jivvsvw*Jivvsv8452lxqp*6!F)4H)4E)4=)4=)4=);H)4H)4E)4=)4=)4=);H)4H)4E)4H)4E)4=)4=!G*Jwgvmtx!I)4H)4E)4=!G*Jlieh!I)4H)4E)4=!Gfsh}*4srpseh!H*6Kilimq*#*=*6!I)4H)4E)4=)4=!Gt!I!Gl5!I!Gjsrx*4gspsv!H*6*74444##*6*4wm~i!H*664*6!IWmi*4lefir*4iw*4kiwglejjx*4*5*4Hmiwi*4Imrxv)I8ki*4wmrh*4tvmzex*4*5!G*Jjsrx!I!G*Jl5!I!G*Jt!I)4H)4E)4=!G*Jfsh}!I)4H)4E!G*Jlxqp!I)4H)4E)4H)4E"</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"-"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">">"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"#"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">"<"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"!"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">")7"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"*"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">")6"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span><span class="token number">1414</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> y<span class="token operator">=</span>x<span class="token punctuation">.</span><span class="token function">charCodeAt</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span> z<span class="token operator">=</span>y<span class="token operator">-</span><span class="token number">4</span><span class="token punctuation">;</span> w<span class="token operator">=</span>String<span class="token punctuation">.</span><span class="token function">fromCharCode</span><span class="token punctuation">(</span>z<span class="token punctuation">)</span><span class="token punctuation">;</span> v<span class="token operator">=</span>v<span class="token operator">+</span>w<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> document<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token function">unescape</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span><span class="token punctuation">;</span> </code></pre> <p>Die in login.html benötigte datei md5.js beinhaltet die Verschlüsselung.</p> <p>Wenn jemand versuchen sollte die geheime oder die login seite ohne javascript zu öffenen kann nicht entcodiert werden, also sieht er nichts ausser dem verschlüsselten code. Wer versucht die geheme seite einfach über die URL aufzurufen fliegt sofort raus. Ich erlaube jedem, der etwas davon hält diessn Code zu kopieren. Bitte sagt mir, was ihr davon haltet.<br> MFG SimonSSS</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434171#m1434171 LX 2010-03-12T16:44:59Z 2010-03-12T16:44:59Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>... Bitte sagt mir, was ihr davon haltet.</p> </blockquote> <p>Ganz weiten Abstand. Im Zweifel kann sich ein Nutzer den Code auch ohne Browser anschauen und ihn beliebig auseinandernehmen - ohne ihn mit document.write in der Seite anzuwenden.</p> <p>Wenn Du auch nur ansatzweise Sicherheit haben willst, bist Du auf eine serverseitige Lösung angewiesen, sei es über ein Session- oder HTTP/Auth-basiertes System, optimalerweise über HTTPS.</p> <p>Gruß, LX</p> <div class="signature">-- <br> RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.<br> RFC 1925, Satz 11a: Siehe Regel 6a<br> </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434168#m1434168 Encoder 2010-03-12T16:56:40Z 2010-03-12T16:56:40Z Sicherer Javascript Passwortschutz ?! <p>document.write(unescape(v)); durch alert(v); ersetzen und schon hat mans.</p> <p>Dein Code enthält wirklich nichts das man nicht irgendwie ausfindig machen könnte.<br> Leite doch auf eine Seite ".../seite" + md5(passwort) + ".html" um. Das macht dir weniger Arbeit und enthält immerhin kein Geheimnis im Code der Seite.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434167#m1434167 JürgenB juergen@berkemeier.eu http://www.berkemeier.eu 2010-03-12T17:24:38Z 2010-03-12T17:24:38Z Sicherer Javascript Passwortschutz ?! <p>Hallo SimonSSS,</p> <p><font color="#000088" size="20">Sie haben es geschafft ! Diese Einträge sind privat !</font></p> <p>du solltest dich lieber mit css beschäftigen.</p> <p>Gruß, Jürgen</p> <p>PS Hast du im FF schon mal die Funktion "Auswahl-Quelltext anzeigen" ausprobiert?</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434133#m1434133 Der Martin self@kennst.net 2010-03-12T17:46:06Z 2010-03-12T17:46:06Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>auf so ziemlich jeder Website, die sich mit Javascript oder HTML befasst steht, dass es keinen sicheren Javascript Passwortschutz gibt.</p> </blockquote> <p>ja, und was meinst du, warum das so ist?<br> Weil Javascript ausschließlich im Browser abläuft. Das heißt, jeder[*] kann den Quellcode einsehen, und mit etwas Phantasie die Stelle finden, die über Hopp oder Topp entscheidet.<br> Ab dann ist es völlig unnötig, eventuelle Verschlüsselungen zu knacken, da ich die Zeile, die die Bedingung prüft, direkt manipulieren kann.</p> <blockquote> <p>Allerdings glaube ich eine Möglichkeit gefunden zu haben einen sicheren Javascript Passwortschutz zu erstellen.</p> </blockquote> <p>"Bewerber mit einem Perpetuum-Mobile-Entwurf bitte links, Bewerber mit einem sicheren Javascript-Zugangsschutz bitte rechts anstellen."</p> <blockquote> <p>Wenn jemand versuchen sollte die geheime oder die login seite ohne javascript zu öffenen kann nicht entcodiert werden, also sieht er nichts ausser dem verschlüsselten code.</p> </blockquote> <p>Wie kommst du darauf? Ich kann mir den verschlüsselten Quellcode lokal speichern und in aller Ruhe untersuchen.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Ordnung schaffen heißt, das Eigelb vom Dotter zu trennen.<br> </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434132#m1434132 stewe 2010-03-12T17:56:03Z 2010-03-12T17:56:03Z Sicherer Javascript Passwortschutz ?! <p>Hai!</p> <blockquote> <p>auf so ziemlich jeder Website, die sich mit Javascript oder HTML befasst steht, dass es keinen sicheren Javascript Passwortschutz gibt.</p> </blockquote> <p>Das steht da, weil es so ist. Der Grund ist einfach: Javascript wird browserseitig ausgeführt, das heisst es handelt sich um für jeden frei einsehbaren Code. Auch dass du den Code noch verschlüsselst ändert nichts daran - nichts kann mich daran hindern, diesen wieder zu entschlüsseln. Verschlüsseln ist nicht gleich schützen.<br> Und wenn ich den Code sehe, dann hindert mich nichts daran, irgendeine Zahl genau so zu erstellen wie es dein Code tut, um damit dann auf die von dir angegebene Seite zu kommen.</p> <p>Aber das ist noch nichtmal die eigentliche Unsicherheit deines Scripts.<br> Denn ich muss mir gar nicht erst die Mühe machen, eine passende Zahl zu erstellen:<br> Ich kann einfach in meinem Browser Javascript deaktivieren und dann wunderschön auf deine "gesicherte" Seite surfen...</p> <p>Warum? Der Server schickt mir die Seite mit dem gesamten Code, auch jenem, den du eigentlich schützen wolltest. Javascript kann mich niemals daran hindern, diesen anzuschauen.</p> <p>Fazit: Du hast noch sehr sehr sehr viel zu lernen..</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434131#m1434131 Peter Pan 2010-03-12T18:27:02Z 2010-03-12T18:27:02Z Sicherer Javascript Passwortschutz ?! <p>Hi!</p> <blockquote> <p>Allerdings glaube ich eine Möglichkeit gefunden zu haben einen sicheren Javascript Passwortschutz zu erstellen.</p> </blockquote> <p>Nein, das ist ein Mißverständnis in der selben Größenordnung wie <a href="https://forum.selfhtml.org/?t=195946&m=1312208" rel="noopener noreferrer">dieses hier</a>, welches Du auch mit "allerdings.." zu erklären versuchtest.<br> Was kommt als nächstes? Ein paar Märchen sind ja vielleicht noch übrig...</p> <p>off:PP</p> <div class="signature">-- <br> "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)<br> </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434130#m1434130 Peter Pan 2010-03-12T18:31:54Z 2010-03-12T18:31:54Z Don't feed the Trolls <p>Hi!<br> nach nochmaligem Lesen von <a href="https://forum.selfhtml.org/?t=195946&m=1312208" rel="noopener noreferrer">https://forum.selfhtml.org/?t=195946&m=1312208</a>, in welchem Du nicht geantwortest hast, nach Deiner kühnen Behauptung in diesem Thread und diesem Beitrag heute, halte ich Dich für einen 100% Troll!</p> <p>off:PP</p> <div class="signature">-- <br> "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)<br> </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434129#m1434129 Novi 2010-03-12T19:16:38Z 2010-03-12T19:16:38Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>Wenn jemand versuchen sollte die geheime oder die login seite ohne javascript zu öffenen kann nicht entcodiert werden, also sieht er nichts ausser dem verschlüsselten code. Wer versucht die geheme seite einfach über die URL aufzurufen fliegt sofort raus. Ich erlaube jedem, der etwas davon hält diessn Code zu kopieren. Bitte sagt mir, was ihr davon haltet.<br> MFG SimonSSS</p> </blockquote> <p>da du es ja nur testen willst, habe ich mir mal erlaubt dir zur Beweisen, dass man deinen Schutz ohne Probleme umgehen kann:<br> http://www.simodan.de/privat.html?95.207508264767024e+50</p> <p>Deine Ideen und deine Verschlüsselung machen die Sache natürlich schon etwas komplizierter. Mit einem geeigneten Browser, sieht man aber ohne Probleme den decodierten Quelltext.</p> <p>Deine Passwortabfrage bietet vielleicht einen effektiven Schutz für sagen wir mal maximal 5 Minuten. Aber auch nur dann, wenn der "Angreifer" oder halt der Tester deines Scriptes nicht weiß, wie dein Script im groben funktioniert.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434128#m1434128 Novi 2010-03-13T09:25:33Z 2010-03-13T09:25:33Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>var b = ((((((((((((((((a+10)*3)+23)*85)-2)*16)+8)*7)-70)*99)+12345)*852)+741236985)*8426)+666)*951235786248951368742685135497265); // erzeugt eine Kompliziert erstellte Zahl b</p> </blockquote> <p>Das ist ein Trugschluss. Auch wenn der Term lang ist, ist er im Grunde genommen nur eine lineare Funktion:</p> <p>var b = 19308237299274200000000000000000000000000000000*a+346976690783234000000000000000000000000000000000</p> <p>Gut das Ergebnis könnte eine Rundung sein, aber das spielt bei deinem Script ja scheinbar eh keine Rolle.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434134#m1434134 molily zapperlott@gmail.com 2010-03-13T12:37:48Z 2010-03-13T12:37:48Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Ab dann ist es völlig unnötig, eventuelle Verschlüsselungen zu knacken, da ich die Zeile, die die Bedingung prüft, direkt manipulieren kann.</p> </blockquote> <p>Wenn tatsächlich eine Verschlüsselung vorliegt, also nur Geheimtext und der JavaScript-Entschlüsselungsalgorithmus im Quelltext steht, dann muss man ihn sehr wohl knacken, denn den Schlüssel kennt ja nur der Anwender.</p> <p>Mathias</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434166#m1434166 Novi 2010-03-13T21:24:41Z 2010-03-13T21:24:41Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <p>da kann ich dir nur zustimmen. Wenn man den eigentlichen Quelltext der Seite mit einem gängigen Verschlüsselungsverfahren wie AES verschlüsselst, bei dem der Algorithmus einem Angreifer bekannt sein darf, kann man diesen auch in Javascript schreiben, da ein Angreifer auch bei einer Manipulation des Quelltextes den Code nicht so umschreiben kann, dass er ohne Schlüssel funktioniert. Dafür muss man den eingegebenen Schlüssel aber auch wirklich zum Entschlüsseln verwenden und darf diesen nicht mit Javascript mit einem anderen Wert vergleichen, um dann mit einem im Quelltext integrierten Schlüssel den Geheimtext zu entschlüsseln.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434136#m1434136 Novi 2010-03-13T21:45:14Z 2010-03-13T21:45:14Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <p>wo wir gerade beim Thema sind. Ich bin gerade wieder über die Aussagen in diesem Beitrag gestolpert:</p> <p><a href="http://aktuell.de.selfhtml.org/artikel/javascript/md5/" rel="nofollow noopener noreferrer">http://aktuell.de.selfhtml.org/artikel/javascript/md5/</a></p> <p>Hier wird doch tatsächlich behauptet, dass es sinnvoll ist die Passwörter vor dem übertragen einfach durch eine Hash-Funktion laufen zu lassen.</p> <p>Was soll das bitte sehr bringen?! Schließlich könnte ein Angreifer den gehashten Wert abfangen und einfach selbst senden, um sich zu authentifizieren.</p> <p>Sinvoll könnte es nur werden, wenn man das Passwort mit einem vom Server vorgegebenen Wert, der sich jedes mal ändert, kombiniert und einen gemeinsamen MD5-Wert berechnet. Dadurch würde man zwar immer das gleiche Passwort abfragen, aber durch den vom Server generierten Wert, immer einen anderen Hash-Wert verlangen.</p> <p>Das Verfahren hätte jedoch den Nachteil, dass der Server auch das Passwort selbst und nicht nur seinen Hash kennen muss, da man nur mit dem Passwort den jeweils von einem weiteren Wert abhängenden Hash berechnen könnte.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434135#m1434135 suit suit@rebell.at http://rebell.at/ 2010-03-15T11:37:59Z 2010-03-15T11:37:59Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Wenn tatsächlich eine Verschlüsselung vorliegt, also nur Geheimtext und der JavaScript-Entschlüsselungsalgorithmus im Quelltext steht, dann muss man ihn sehr wohl knacken, denn den Schlüssel kennt ja nur der Anwender.</p> </blockquote> <p>Das erfordert aber, dass der auszuliefernde Klartext ebenfalls nur in verschlüsselter Form im JavaScript-Quellcode vorliegt. Jegliche Weiterleitung auf eine öffentliche Seite führt das Konzept ad absurdum.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434138#m1434138 suit suit@rebell.at http://rebell.at/ 2010-03-15T11:33:43Z 2010-03-15T11:33:43Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Was soll das bitte sehr bringen?! Schließlich könnte ein Angreifer den gehashten Wert abfangen und einfach selbst senden, um sich zu authentifizieren.</p> </blockquote> <p>Der Sinn von gehashen Passwörter ist nicht (und war nie), das Login sicher zu gestalten, sondern das Klartextpasswort zu schützen.</p> <blockquote> <p>Sinvoll könnte es nur werden, wenn man das Passwort mit einem vom Server vorgegebenen Wert, der sich jedes mal ändert, kombiniert und einen gemeinsamen MD5-Wert berechnet. Dadurch würde man zwar immer das gleiche Passwort abfragen, aber durch den vom Server generierten Wert, immer einen anderen Hash-Wert verlangen.</p> </blockquote> <p>Sinnvoll zum Schützen der übertragenen Daten ist ein etablierter Mechanismus wie SSL.</p> <blockquote> <p>Das Verfahren hätte jedoch den Nachteil, dass der Server auch das Passwort selbst und nicht nur seinen Hash kennen muss, da man nur mit dem Passwort den jeweils von einem weiteren Wert abhängenden Hash berechnen könnte.</p> </blockquote> <p>Unsinn, der Server könnte kann nach denselben Regeln den Hash behandeln und den ebenso behandelten Hash in seiner Datenbank vergleichen.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434137#m1434137 stewe 2010-03-26T15:40:42Z 2010-03-26T15:40:42Z Sicherer Javascript Passwortschutz ?! <p>Hola!</p> <blockquote> <p>Hier wird doch tatsächlich behauptet, dass es sinnvoll ist die Passwörter vor dem übertragen einfach durch eine Hash-Funktion laufen zu lassen.</p> </blockquote> <p>Noch ein theoretischer Einwand in eine andere Richtung: Ich hab mich nicht vertieft mit Hash-Funktionen auseinandergesetzt, aber das Grundprinzip ist doch, dass eine sehr grosse Menge an möglichen Eingabewerten auf eine viel kleinere Menge von Ausgangswerten gemappt werden und die Funktion dadurch irreversibel wird. Wenn jetzt aber ein potentieller Hacker nicht mehr das Passwort, sondern den Hash erraten muss (da dieser im Endeffekt übertragen wird), dann wird doch das Ganze viel angreifbarer, da es weniger mögliche Kombinationen gibt?</p> <p>gruss</p> <p>stewe</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434139#m1434139 Novi 2010-03-15T14:18:48Z 2010-03-15T14:18:48Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>Der Sinn von gehashen Passwörter ist nicht (und war nie), das Login sicher zu gestalten, sondern das Klartextpasswort zu schützen.</p> </blockquote> <p>Wenn der Server aber direkt den Hash-Wert und nicht das Passwort selbst zu Authentifizierung haben will, dann reicht es einem Angreifer den Hash des Passwortes zu kennen. Das Passwort selbst hätte keine Bedeutung, da der Hash vom Passwort immer dann gesendet wird, wenn man ansonsten das Passwort im Klartext gesendet hätte. Du schützt zwar das Passwort, aber für einen Angreifer reich es dadurch aus, nur den Hash zu kennen. Also ist es sinnlos dieses Passwort zu schützen. (Zumindest auf diese Weise)</p> <blockquote> <blockquote> <p>Sinvoll könnte es nur werden, wenn man das Passwort mit einem vom Server vorgegebenen Wert, der sich jedes mal ändert, kombiniert und einen gemeinsamen MD5-Wert berechnet. Dadurch würde man zwar immer das gleiche Passwort abfragen, aber durch den vom Server generierten Wert, immer einen anderen Hash-Wert verlangen.</p> </blockquote> <p>Sinnvoll zum Schützen der übertragenen Daten ist ein etablierter Mechanismus wie SSL.</p> </blockquote> <p>Damit hast du natürlich recht. Aber das wollte ich mit meinem Satz auch nie infrage stellen.</p> <blockquote> <blockquote> <p>Das Verfahren hätte jedoch den Nachteil, dass der Server auch das Passwort selbst und nicht nur seinen Hash kennen muss, da man nur mit dem Passwort den jeweils von einem weiteren Wert abhängenden Hash berechnen könnte.</p> </blockquote> </blockquote> <blockquote> <p>Unsinn, der Server könnte kann nach denselben Regeln den Hash behandeln und den ebenso behandelten Hash in seiner Datenbank vergleichen.</p> </blockquote> <p>Du musst mich falsch verstanden haben. Der Nachteil bezog sich auf meinen Vorschlag oben, bei dem der Server immer einen Wert, der in den Hash mit einfließt, an den Clienten sendet. Somit wäre der Hash immer unterschiedlich.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434140#m1434140 suit suit@rebell.at http://rebell.at/ 2010-03-15T15:35:59Z 2010-03-15T15:35:59Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Wenn der Server aber direkt den Hash-Wert und nicht das Passwort selbst zu Authentifizierung haben will, dann reicht es einem Angreifer den Hash des Passwortes zu kennen. Das Passwort selbst hätte keine Bedeutung, da der Hash vom Passwort immer dann gesendet wird, wenn man ansonsten das Passwort im Klartext gesendet hätte. Du schützt zwar das Passwort, aber für einen Angreifer reich es dadurch aus, nur den Hash zu kennen. Also ist es sinnlos dieses Passwort zu schützen. (Zumindest auf diese Weise)</p> </blockquote> <p>Wenn ein Angreifer deinen HTTP-Traffic überwachen kann, ist es egal ob der den übertragenen Hash oder das Klartextpasswort snifft - bei der Hash-Variante wird das Klartextpasswort aber geschützt, da es oftmals wahrscheinlich ist, dass der Benutzer dasselbe Passwort anderswo auch noch verwendet.</p> <p>Nochmal: Passwörter zu hashen dient NIEMALS der Sicherheit des Login-Systems sondern einzig und allein der Sicherheit des Passworts.</p> <blockquote> <p>Du musst mich falsch verstanden haben. Der Nachteil bezog sich auf meinen Vorschlag oben, bei dem der Server immer einen Wert, der in den Hash mit einfließt, an den Clienten sendet. Somit wäre der Hash immer unterschiedlich.</p> </blockquote> <p>Ja, aber irgendwelchen Regelmäßigkeiten muss dieser Mechanismus folgen - und diese Regel lässt sich sowohl auf der Client- alsauch auf der Serverseite implementieren.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434141#m1434141 Novi 2010-03-15T16:04:56Z 2010-03-15T16:04:56Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <blockquote> <p>Wenn der Server aber direkt den Hash-Wert und nicht das Passwort selbst zu Authentifizierung haben will, dann reicht es einem Angreifer den Hash des Passwortes zu kennen. Das Passwort selbst hätte keine Bedeutung, da der Hash vom Passwort immer dann gesendet wird, wenn man ansonsten das Passwort im Klartext gesendet hätte. Du schützt zwar das Passwort, aber für einen Angreifer reich es dadurch aus, nur den Hash zu kennen. Also ist es sinnlos dieses Passwort zu schützen. (Zumindest auf diese Weise)</p> </blockquote> <p>Wenn ein Angreifer deinen HTTP-Traffic überwachen kann, ist es egal ob der den übertragenen Hash oder das Klartextpasswort snifft - bei der Hash-Variante wird das Klartextpasswort aber geschützt, da es oftmals wahrscheinlich ist, dass der Benutzer dasselbe Passwort anderswo auch noch verwendet.</p> </blockquote> <p>Und wenn überall das Passwort als Hash-Wert übertragen wird, dann braucht der Angreifer auch nur diesen Hash. Konsequentes Hashen würde dazu führen, dass das Klartextpasswort keine Rolle mehr spielt. Was bringt es, wenn niemand mein Passwort kennt, solange überall eh nur der Hash verlangt wird. Wenn "der Benutzer dasselbe Passwort anderswo auch noch verwendet", dann wird auch da der selbe Hash verwendet. Wo liegt da der Vorteil?</p> <p>Deshalb meine ich ja, dass das Hashen nichts bringt. Gut wenn jetzt einige das Passwort als Hash-Wert übertragen und andere nicht, dann bringt es etwas.</p> <p>Oder man hasht eben nicht nur das Passwort und den Benutzernamen, die ja auch auf anderen Seiten gleich sein können, sondern beides in Verbindung mit einem Server-Spezifischen Wert. Dann könnte ein Angreifer den abgefangenen Hash nicht für andere Seiten verwenden.</p> <p>Der Artikel klingt jedoch so, als würde man allein durch das Übertragen des Passwortes als Hash-Wert einen Sicherheitsgewinn haben.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434142#m1434142 Detlef G. selfforum@d-graff.de 2010-03-15T17:29:29Z 2010-03-15T17:29:29Z Sicherer Javascript Passwortschutz ?! <p>Hallo Novi,</p> <blockquote> <p>Und wenn überall das Passwort als Hash-Wert übertragen wird, dann braucht der Angreifer auch nur diesen Hash. … Wo liegt da der Vorteil?</p> </blockquote> <p>Üblicherweise wird ein <a href="http://de.wikipedia.org/wiki/Salted_Hash" rel="nofollow noopener noreferrer">gesalzener Hash</a> verwendet.</p> <p>Auf Wiederlesen<br> Detlef</p> <div class="signature">-- <br> - Wissen ist gut<br> - Können ist besser<br> - aber das Beste und Interessanteste ist der Weg dahin! </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434165#m1434165 Novi 2010-03-15T18:22:52Z 2010-03-15T18:22:52Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <blockquote> <p>Und wenn überall das Passwort als Hash-Wert übertragen wird, dann braucht der Angreifer auch nur diesen Hash. … Wo liegt da der Vorteil?</p> </blockquote> <p>Üblicherweise wird ein <a href="http://de.wikipedia.org/wiki/Salted_Hash" rel="nofollow noopener noreferrer">gesalzener Hash</a> verwendet.</p> </blockquote> <p>Ja den Vorschlag habe ich ja eben auch gemacht:</p> <blockquote> <p>Oder man hasht eben nicht nur das Passwort und den Benutzernamen, die ja auch auf anderen Seiten gleich sein können, sondern beides in Verbindung mit einem Server-Spezifischen Wert. Dann könnte ein Angreifer den abgefangenen Hash nicht für andere Seiten verwenden.</p> </blockquote> <p>Aber davon steht auch nichts in dem Fachartikel.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434147#m1434147 Novi 2010-03-15T18:46:51Z 2010-03-15T18:46:51Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <p>vielleicht sollte ich nochmal klarstellen, auf was ich eigentlich aufmerksam machen wollte:</p> <p>Der Fachartikel <a href="http://aktuell.de.selfhtml.org/artikel/javascript/md5/" rel="nofollow noopener noreferrer">MD5-Hashing mit JavaScript</a> mit dem Untertitel "Der MD5-Alghorithmus zur sicheren Paßwortübertragung als JavaScript-Version" liest sich so, als wenn man durch das Übertragen von Hash-Werten, das Abfangen von Passwörtern und somit auch einen Angriff verhindern kann. Jedoch kann der Hash-Wert genauso gut abgefangen werden, sodass sich die Sicherheit des Loginsystems, wie mehrfach von suit betonnt, nicht erhöht. Diese Tatsache sollte vielleicht im Artikel erwähnt werden. Natürlich wird das Abfangen des eigentlichen Passwortes, zumindest auf direktem Wege, verhindert. Jedoch wird auch hier nicht darauf eingegangen, dass man einen server-spezifischen Wert (Salt) mit einfließen lassen sollte, um zu verhindern das der Hash eines Passwortes für mehrere Seiten gilt.</p> <p>Und somit bleibe ich bei meiner am Anfang aufgestellten These, dass es nichts bringt, wenn man Passwörter einfach nur durch eine Hash-Funktion laufen lässt bevor man sie verschickt. Ohne Salt bringt es einfach nichts. Und für das eigene Loginsystem erhöht es nicht die Sicherheit. Der Artikel könnte viele Leute in die irre führen, die glauben, dass ihre Loginsystem durch MD5 sicher wäre.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434143#m1434143 suit suit@rebell.at http://rebell.at/ 2010-03-16T08:55:50Z 2010-03-16T08:55:50Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Üblicherweise wird ein <a href="http://de.wikipedia.org/wiki/Salted_Hash" rel="nofollow noopener noreferrer">gesalzener Hash</a> verwendet.</p> </blockquote> <p>Aber auch der dient nicht dazu, das Login sicherer zu gestalten, sondern das Klartextpasswort zu schützen.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434144#m1434144 Detlef G. selfforum@d-graff.de 2010-03-16T16:43:09Z 2010-03-16T16:43:09Z Sicherer Javascript Passwortschutz ?! <p>Hallo suit</p> <blockquote> <blockquote> <blockquote> <p>Und wenn überall das Passwort als Hash-Wert übertragen wird, dann braucht der Angreifer auch nur diesen Hash. … Wo liegt da der Vorteil?</p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <p>Üblicherweise wird ein <a href="http://de.wikipedia.org/wiki/Salted_Hash" rel="nofollow noopener noreferrer">gesalzener Hash</a> verwendet.</p> </blockquote> </blockquote> <blockquote> <p>Aber auch der dient nicht dazu, das Login sicherer zu gestalten, …</p> </blockquote> <p>Wo habe ich das behauptet?</p> <p>Auf Wiederlesen<br> Detlef</p> <div class="signature">-- <br> - Wissen ist gut<br> - Können ist besser<br> - aber das Beste und Interessanteste ist der Weg dahin! </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434145#m1434145 suit suit@rebell.at http://rebell.at/ 2010-03-16T18:51:24Z 2010-03-16T18:51:24Z Sicherer Javascript Passwortschutz ?! <blockquote> <blockquote> <p>Aber auch der dient nicht dazu, das Login sicherer zu gestalten, …</p> </blockquote> <p>Wo habe ich das behauptet?</p> </blockquote> <p>Hast du nicht - aber Novi liest das auch aus einem verlinkten Artikel raus wo das so nicht steht ;)</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434146#m1434146 Novi 2010-03-16T22:20:26Z 2010-03-16T22:20:26Z Sicherer Javascript Passwortschutz ?! <p>Hallo,> > > Aber auch der dient nicht dazu, das Login sicherer zu gestalten, …</p> <blockquote> <blockquote> <p>Wo habe ich das behauptet?</p> </blockquote> <p>Hast du nicht - aber Novi liest das auch aus einem verlinkten Artikel raus wo das so nicht steht ;)</p> </blockquote> <p>Ja da muss ich dir schon recht geben, dass es da nicht explizit geschrieben steht. Man könnte es aber so verstehen, weil ja auch nicht direkt darauf hingewiesen wird, dass es nicht so ist.</p> <p>Aber bitte versteh mich nicht falsch und glaube, dass ich das auch so sehe. Mir ist es ja klar wie es ist, ansonsten hätte ich ja auch kein Grund den Artikel zu kritiesieren.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434148#m1434148 suit suit@rebell.at http://rebell.at/ 2010-03-16T09:02:42Z 2010-03-16T09:02:42Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Der Fachartikel <a href="http://aktuell.de.selfhtml.org/artikel/javascript/md5/" rel="nofollow noopener noreferrer">MD5-Hashing mit JavaScript</a> mit dem Untertitel "Der MD5-Alghorithmus zur sicheren Paßwortübertragung als JavaScript-Version" liest sich so, als wenn man durch das Übertragen von Hash-Werten, das Abfangen von Passwörtern und somit auch einen Angriff verhindern kann.</p> </blockquote> <p>Woraus liest du das?</p> <p>Diese Methode schützt nur das Klartextpasswort falls man z.B. keine HTTPS-Verbindung nutzen kann, mehr nicht.</p> <blockquote> <p>Jedoch kann der Hash-Wert genauso gut abgefangen werden, sodass sich die Sicherheit des Loginsystems, wie mehrfach von suit betonnt, nicht erhöht.</p> </blockquote> <p>Richtig.</p> <blockquote> <p>Diese Tatsache sollte vielleicht im Artikel erwähnt werden. Natürlich wird das Abfangen des eigentlichen Passwortes, zumindest auf direktem Wege, verhindert. Jedoch wird auch hier nicht darauf eingegangen, dass man einen server-spezifischen Wert (Salt) mit einfließen lassen sollte, um zu verhindern das der Hash eines Passwortes für mehrere Seiten gilt.</p> </blockquote> <p>Das Passwort bei der Übertragung aus dem Frontend zu salten macht das Passwort unsicherer, da das generieren einer Hash-Tabelle aus einem Wörterbuch oder per Zähler mit einem bekannten Prefix bei einem einzelnen Passwort durchaus noch sinnvoll ist.</p> <p>Ein Salt ist dafür da, viele Passwörter zu schützen. Ein einzelnes schwaches Passwort profitiert davon nicht.</p> <blockquote> <p>Und somit bleibe ich bei meiner am Anfang aufgestellten These, dass es nichts bringt, wenn man Passwörter einfach nur durch eine Hash-Funktion laufen lässt bevor man sie verschickt. Ohne Salt bringt es einfach nichts.</p> </blockquote> <p>Doch, es schützt das Klartextpasswort wenn kein SSL zur Verfügung steht. Salt oder kein Salt spielt hier keine große Rolle.</p> <blockquote> <p>Und für das eigene Loginsystem erhöht es nicht die Sicherheit.</p> </blockquote> <p>Ich weiß immer noch nicht, wo das in dem Artikel steht :)</p> <blockquote> <p>Der Artikel könnte viele Leute in die irre führen, die glauben, dass ihre Loginsystem durch MD5 sicher wäre.</p> </blockquote> <p>Es glauben ohnehin viele Leute, dass ein Passwört durch MD5 sicher wäre.</p> <p>Ebenso gibt es viele Leute, die glauben dass ein es sichrer wäre MD5 gegen SHA-256 zu ersetzen. Bei dämlichen Passwörtern ist es aber völlig unerheblich.</p> <p>Das ist aber nicht die Aufgabe des von dir verlinkten Artikels.</p> <p>Er beschreibt nur, wie man mit JavaScript einen MD5-Hash erzeugt.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434149#m1434149 Novi 2010-03-16T14:43:15Z 2010-03-16T14:43:15Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>Woraus liest du das?</p> </blockquote> <p>Ich mein ja nur, dass es so wirkt. Man sollte explizit sagen, dass es nicht so ist.</p> <blockquote> <p>Diese Methode schützt nur das Klartextpasswort falls man z.B. keine HTTPS-Verbindung nutzen kann, mehr nicht.</p> </blockquote> <p>Ohne Salt bringt es dir aber nichts, weil man dann das Klartextpasswort überhaupt nicht mehr schützen müsste. Schließlich ineressiert sich der Angreifer nicht mehr für ein Klartextpasswort, wenn jedes Login-System nur einen Hash haben will. Er muss nicht einmal den Hash vom Passwort berechnen, sondern kann den abgefangenen Hash gleich bei anderen Servern testen.</p> <blockquote> <p>Das Passwort bei der Übertragung aus dem Frontend zu salten macht das Passwort unsicherer, da das generieren einer Hash-Tabelle aus einem Wörterbuch oder per Zähler mit einem bekannten Prefix bei einem einzelnen Passwort durchaus noch sinnvoll ist.</p> </blockquote> <p>Wenn ich ein Wörtebuch habe, für ein 8-stelliges Passwort, dann wäre dieses genauso groß wie ein Wörtebuch für ein 8-steliges Passwort + Salt. Das setzt die Sicherheit doch nicht herab. Die ersten feststehenden Zeichen beeinflussen zwar den Hash-Wert und verändern diesen. Jedoch wird dadurch die Anzahl der möglichen Hash-Werte nicht verringert. (Zumindest wenn man mögliche Kollisionen vernachlässigt, die bei einem relativen kurzen Salt und Passwort eher nicht auftreten sollten.)</p> <blockquote> <p>Ein Salt ist dafür da, viele Passwörter zu schützen. Ein einzelnes schwaches Passwort profitiert davon nicht.</p> </blockquote> <p>Doch damit der Hash nicht bei einem anderen Server verwendet werden kann, wo der Benutzer das gleiche Passwort einsetzt.</p> <blockquote> <blockquote> <p>Und somit bleibe ich bei meiner am Anfang aufgestellten These, dass es nichts bringt, wenn man Passwörter einfach nur durch eine Hash-Funktion laufen lässt bevor man sie verschickt. Ohne Salt bringt es einfach nichts.</p> </blockquote> <p>Doch, es schützt das Klartextpasswort wenn kein SSL zur Verfügung steht. Salt oder kein Salt spielt hier keine große Rolle.</p> </blockquote> <p>Doch eine erhebliche, da ohne Salt wie schon mehrfach erwähnt der Hash auch bei anderen Servern verwendet werden kann.</p> <blockquote> <blockquote> <p>Und für das eigene Loginsystem erhöht es nicht die Sicherheit.</p> </blockquote> <p>Ich weiß immer noch nicht, wo das in dem Artikel steht :)</p> </blockquote> <p>Es steht aber da, dass die Passwörter sicher übertragen werden. Daraus könnte man schließen, dass auch das eigene Loginsystem dadurch sicherer wird. Das ist zwar ein Trugschluss, auf den aber nicht aufmerksam gemacht wird.</p> <blockquote> <p>Es glauben ohnehin viele Leute, dass ein Passwört durch MD5 sicher wäre.</p> </blockquote> <p>Gerade deshalb muss auf so etwas hingewiesen werden. Beim der Beschreibung vom Passwortfeld in Selfhtml, wird auch extra darauf hingewiesen, dass die Passwörter nicht verschlüsselt werden.</p> <p>"Passwörter werden häufig noch im Klartext im Internet/Intranet übertragen (vgl. SELFHTML  Eingabefelder für Passwörter).<br> Neben diesem Risiko, werden die Zugangsdaten auf Seiten des Servers üblicherweise in einer Datenbank abgespeichert. Ein in diesem Beitrag besprochenes Verfahren bietet die Möglichkeit das Passwort direkt MD5 verschlüsselt über das Netz zu schicken."</p> <p>Das klingt doch so, als könnte man damit das Problem durch die "Verschlüsselung" beheben.</p> <blockquote> <p>Ebenso gibt es viele Leute, die glauben dass ein es sichrer wäre MD5 gegen SHA-256 zu ersetzen. Bei dämlichen Passwörtern ist es aber völlig unerheblich.</p> <p>Das ist aber nicht die Aufgabe des von dir verlinkten Artikels.</p> <p>Er beschreibt nur, wie man mit JavaScript einen MD5-Hash erzeugt.</p> </blockquote> <p>Und es gibt ein Anwendungsbeispiel bei dem man auf solche Fallen hinweisen müsste. Ohne dem Anwendungsbeispiel würde ich dir zustimmen.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434150#m1434150 suit suit@rebell.at http://rebell.at/ 2010-03-16T16:16:14Z 2010-03-16T16:16:14Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Ohne Salt bringt es dir aber nichts, weil man dann das Klartextpasswort überhaupt nicht mehr schützen müsste. Schließlich ineressiert sich der Angreifer nicht mehr für ein Klartextpasswort, wenn jedes Login-System nur einen Hash haben will. Er muss nicht einmal den Hash vom Passwort berechnen, sondern kann den abgefangenen Hash gleich bei anderen Servern testen.</p> </blockquote> <p>Nochmal: weder ein Hash noch ein gesalteter Hash dienen in irgend einer Form der Sicherheit des Logins.</p> <p>Wenn der Angreifer so weit ist, dass er den HTTP-Traffic überwachen kann, ist es völlig wurst, ob er das Klartextpasswort, den Hash oder einen gesalteten Hash mitliest - er kann sich damit einloggen.</p> <blockquote> <p>Wenn ich ein Wörtebuch habe, für ein 8-stelliges Passwort, dann wäre dieses genauso groß wie ein Wörtebuch für ein 8-steliges Passwort + Salt.</p> </blockquote> <p>Ja - der einzige Vorteil der Salt-Variante ist, dass die Tabelle mit Salt erst berechnet werden muss, die andere aber potentiell verfügbar ist.</p> <blockquote> <p>Das setzt die Sicherheit doch nicht herab.</p> </blockquote> <p>Nein, bei einem einzelnen Passwort verbessert sie die Sicherheit aber nur sehr unwesentlich, darum ist es in diesem Kontext quasi unnütz.</p> <blockquote> <p>Die ersten feststehenden Zeichen beeinflussen zwar den Hash-Wert und verändern diesen. Jedoch wird dadurch die Anzahl der möglichen Hash-Werte nicht verringert. (Zumindest wenn man mögliche Kollisionen vernachlässigt, die bei einem relativen kurzen Salt und Passwort eher nicht auftreten sollten.)</p> </blockquote> <p>Auch bei einem langen Salt steigt die Kollisionswahrscheinlichkeit nicht an - solange man davon ausgehen kann, dass die Hashfunktion gleichverteilt arbeitet.</p> <blockquote> <p>Doch damit der Hash nicht bei einem anderen Server verwendet werden kann, wo der Benutzer das gleiche Passwort einsetzt.</p> </blockquote> <p>Jetzt hab ich dich verstanden - das ist richtig, setzt aber voraus, dass dort dasselbe Loginverfahren genutzt wird. Die Wahrscheinlichkeit, dass das dort auch so ist, ist aber kleiner alsdass dort dasselbe Klartext-Passwort akzeptiert wird.</p> <p>Darum ist es wesentlich vernünftiger das Passwort vernünftig zu verschlüsseln und dann zu übertragen - und zwar mit einem asynchronen Verfahren - oder eben man nutzt SSL.</p> <blockquote> <p>Es steht aber da, dass die Passwörter sicher übertragen werden. Daraus könnte man schließen, dass auch das eigene Loginsystem dadurch sicherer wird. Das ist zwar ein Trugschluss, auf den aber nicht aufmerksam gemacht wird.</p> </blockquote> <p>Wer aus der sicheren übertragung eines Passworts auf die Sicherheit des Login-Systems schließt, hat den Unterschied zwischen Schlüssel und Schloß nicht verstanden.</p> <p>Was nutzt ein absolut fläschungsicherer Schlüssel, wenn der Schlüssel gestohlen wird?</p> <p>Für diesen Anwendungsfall gibts One-Time-Pad-Verfahren - da hilft auch ein geklauter Schlüssel nichts, verringert aber den Komfort des Systems.</p> <blockquote> <p>"Passwörter werden häufig noch im Klartext im Internet/Intranet übertragen (vgl. SELFHTML  Eingabefelder für Passwörter).<br> Neben diesem Risiko, werden die Zugangsdaten auf Seiten des Servers üblicherweise in einer Datenbank abgespeichert. Ein in diesem Beitrag besprochenes Verfahren bietet die Möglichkeit das Passwort direkt MD5 verschlüsselt über das Netz zu schicken."</p> </blockquote> <blockquote> <p>Das klingt doch so, als könnte man damit das Problem durch die "Verschlüsselung" beheben.</p> </blockquote> <p>Für mich nicht :) aber du kannst den Autor ja anschreiben und Verbesserungsvorschläge machen.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434151#m1434151 Novi 2010-03-16T22:16:25Z 2010-03-16T22:16:25Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <blockquote> <p>Ohne Salt bringt es dir aber nichts, weil man dann das Klartextpasswort überhaupt nicht mehr schützen müsste. Schließlich ineressiert sich der Angreifer nicht mehr für ein Klartextpasswort, wenn jedes Login-System nur einen Hash haben will. Er muss nicht einmal den Hash vom Passwort berechnen, sondern kann den abgefangenen Hash gleich bei anderen Servern testen.</p> </blockquote> <p>Nochmal: weder ein Hash noch ein gesalteter Hash dienen in irgend einer Form der Sicherheit des Logins.</p> </blockquote> <p>Ja, ich weiß das und wusste es von Anfang an. Wir reden aneinander vorbei.</p> <blockquote> <p>Wenn der Angreifer so weit ist, dass er den HTTP-Traffic überwachen kann, ist es völlig wurst, ob er das Klartextpasswort, den Hash oder einen gesalteten Hash mitliest - er kann sich damit einloggen.</p> <blockquote> <p>Wenn ich ein Wörtebuch habe, für ein 8-stelliges Passwort, dann wäre dieses genauso groß wie ein Wörtebuch für ein 8-steliges Passwort + Salt.</p> </blockquote> <p>Ja - der einzige Vorteil der Salt-Variante ist, dass die Tabelle mit Salt erst berechnet werden muss, die andere aber potentiell verfügbar ist.</p> <blockquote> <p>Das setzt die Sicherheit doch nicht herab.</p> </blockquote> <p>Nein, bei einem einzelnen Passwort verbessert sie die Sicherheit aber nur sehr unwesentlich, darum ist es in diesem Kontext quasi unnütz.</p> </blockquote> <p>Wenn sie sich sogar, wenn auch nur unwesentlich, verbessert, solltest du nicht von einem Herabsetzen der Sicherheit sprechen.</p> <blockquote> <blockquote> <p>Doch damit der Hash nicht bei einem anderen Server verwendet werden kann, wo der Benutzer das gleiche Passwort einsetzt.</p> </blockquote> <p>Jetzt hab ich dich verstanden - das ist richtig, setzt aber voraus, dass dort dasselbe Loginverfahren genutzt wird. Die Wahrscheinlichkeit, dass das dort auch so ist, ist aber kleiner alsdass dort dasselbe Klartext-Passwort akzeptiert wird.</p> </blockquote> <p>Wenn jeder auf die im Artikel vorgeschlagene Lösung zurückgreift, haben wir aber ein Problem. Außerdem was meinst du konkret mit verschiedenen Loginverfahren. Im normal-Fall wird halt der Benutzername und das Passwort übertragen und das Passwort unter Umständen als Hashwert. Wenn jedes Loginverfahren den Hash anders berechnet bzw. andere Werte mit einfließen lässt, dann haben wir ja unseren server-spezifischen Wert.</p> <blockquote> <blockquote> <p>Es steht aber da, dass die Passwörter sicher übertragen werden. Daraus könnte man schließen, dass auch das eigene Loginsystem dadurch sicherer wird. Das ist zwar ein Trugschluss, auf den aber nicht aufmerksam gemacht wird.</p> </blockquote> <p>Wer aus der sicheren übertragung eines Passworts auf die Sicherheit des Login-Systems schließt, hat den Unterschied zwischen Schlüssel und Schloß nicht verstanden.</p> </blockquote> <p>Man kann aber eine sichere Übertragung so verstehen, dass der Schlüssel  nicht abgefangen werden kann. Für mich bedeutet eine sichere Übertragung mehr, als nur einen Hash zu verschicken.</p> <p>Naja wir scheinen uns ja langsam zu verstehen...</p> <p>Du wirst mir sicherlich zustimmen, wenn ich behaupte, dass das direkte und bei jedem Loginverfahren gleich angewandtes hashen eines Passwortes weder einen Vorteil für die Sicherheit des Loginsystems hat, noch davor schützt, dass ein Angreifer diesen Hash auch woanders einsetzen kann. Somit bringt das einfache Hashen, wie in dem Artikel gezeigt, keinen Vorteil.</p> <p>Das mit der E-Mail an den Autor ist eine gute Idee.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434152#m1434152 Pryos.org pryos@pryos.org 2010-03-17T10:20:46Z 2010-03-17T10:20:46Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Hallo,</p> </blockquote> <p>Hallo,</p> <p>ich verwende ausnahmsweise mal die Unart alles zu Quoten.</p> <blockquote> <blockquote> <blockquote> <p>Ohne Salt bringt es dir aber nichts, weil man dann das Klartextpasswort überhaupt nicht mehr schützen müsste. Schließlich ineressiert sich der Angreifer nicht mehr für ein Klartextpasswort, wenn jedes Login-System nur einen Hash haben will. Er muss nicht einmal den Hash vom Passwort berechnen, sondern kann den abgefangenen Hash gleich bei anderen Servern testen.</p> </blockquote> <p>Nochmal: weder ein Hash noch ein gesalteter Hash dienen in irgend einer Form der Sicherheit des Logins.</p> </blockquote> <p>Ja, ich weiß das und wusste es von Anfang an. Wir reden aneinander vorbei.</p> <blockquote> <p>Wenn der Angreifer so weit ist, dass er den HTTP-Traffic überwachen kann, ist es völlig wurst, ob er das Klartextpasswort, den Hash oder einen gesalteten Hash mitliest - er kann sich damit einloggen.</p> <blockquote> <p>Wenn ich ein Wörtebuch habe, für ein 8-stelliges Passwort, dann wäre dieses genauso groß wie ein Wörtebuch für ein 8-steliges Passwort + Salt.</p> </blockquote> <p>Ja - der einzige Vorteil der Salt-Variante ist, dass die Tabelle mit Salt erst berechnet werden muss, die andere aber potentiell verfügbar ist.</p> <blockquote> <p>Das setzt die Sicherheit doch nicht herab.</p> </blockquote> <p>Nein, bei einem einzelnen Passwort verbessert sie die Sicherheit aber nur sehr unwesentlich, darum ist es in diesem Kontext quasi unnütz.</p> </blockquote> <p>Wenn sie sich sogar, wenn auch nur unwesentlich, verbessert, solltest du nicht von einem Herabsetzen der Sicherheit sprechen.</p> <blockquote> <blockquote> <p>Doch damit der Hash nicht bei einem anderen Server verwendet werden kann, wo der Benutzer das gleiche Passwort einsetzt.</p> </blockquote> <p>Jetzt hab ich dich verstanden - das ist richtig, setzt aber voraus, dass dort dasselbe Loginverfahren genutzt wird. Die Wahrscheinlichkeit, dass das dort auch so ist, ist aber kleiner alsdass dort dasselbe Klartext-Passwort akzeptiert wird.</p> </blockquote> <p>Wenn jeder auf die im Artikel vorgeschlagene Lösung zurückgreift, haben wir aber ein Problem. Außerdem was meinst du konkret mit verschiedenen Loginverfahren. Im normal-Fall wird halt der Benutzername und das Passwort übertragen und das Passwort unter Umständen als Hashwert. Wenn jedes Loginverfahren den Hash anders berechnet bzw. andere Werte mit einfließen lässt, dann haben wir ja unseren server-spezifischen Wert.</p> <blockquote> <blockquote> <p>Es steht aber da, dass die Passwörter sicher übertragen werden. Daraus könnte man schließen, dass auch das eigene Loginsystem dadurch sicherer wird. Das ist zwar ein Trugschluss, auf den aber nicht aufmerksam gemacht wird.</p> </blockquote> <p>Wer aus der sicheren übertragung eines Passworts auf die Sicherheit des Login-Systems schließt, hat den Unterschied zwischen Schlüssel und Schloß nicht verstanden.</p> </blockquote> <p>Man kann aber eine sichere Übertragung so verstehen, dass der Schlüssel  nicht abgefangen werden kann. Für mich bedeutet eine sichere Übertragung mehr, als nur einen Hash zu verschicken.</p> <p>Naja wir scheinen uns ja langsam zu verstehen...</p> <p>Du wirst mir sicherlich zustimmen, wenn ich behaupte, dass das direkte und bei jedem Loginverfahren gleich angewandtes hashen eines Passwortes weder einen Vorteil für die Sicherheit des Loginsystems hat, noch davor schützt, dass ein Angreifer diesen Hash auch woanders einsetzen kann. Somit bringt das einfache Hashen, wie in dem Artikel gezeigt, keinen Vorteil.</p> </blockquote> <p>Mir ist bei eurer Unterhaltung eine Idee gekommen.<br> Würde es ein Vorteil bringen, wenn man ein Bild mit einer Zahl (wie Captcha) an den Client übermittelt. Mit dem Eingabewert (wird nicht übertragen) aus dieser Zahl wird der Hash gesalzen und auf dem Server vergleichen.</p> <p>So dürfte das Klartext-Passwort geschützt sein, Replayangriffe sollten durch ein immer anderen Salt, welcher nicht Klartext übermittelt wird, ebenfalls unterbunden werden.</p> <blockquote> <p>Viele Grüße Novi</p> </blockquote> <p>mfg Pryos</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434154#m1434154 Novi 2010-03-17T14:30:30Z 2010-03-17T14:30:30Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>Mir ist bei eurer Unterhaltung eine Idee gekommen.<br> Würde es ein Vorteil bringen, wenn man ein Bild mit einer Zahl (wie Captcha) an den Client übermittelt. Mit dem Eingabewert (wird nicht übertragen) aus dieser Zahl wird der Hash gesalzen und auf dem Server vergleichen.</p> </blockquote> <p>Wenn es kein rein automatisierter Angriff ist, kann der Angreifer selbst ja auch einfach die Zahl auf dem Bild lesen oder er setzt halt eine Software ein, die dazu in der Lage ist. Aber dann könntest du auch einfach gleich bei jeder Passwortabfrage Captchas einsetzen, das würde kaum etwas ändern.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434153#m1434153 suit suit@rebell.at http://rebell.at/ 2010-03-22T15:14:13Z 2010-03-22T15:14:13Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Mir ist bei eurer Unterhaltung eine Idee gekommen.<br> Würde es ein Vorteil bringen, wenn man ein Bild mit einer Zahl (wie Captcha) an den Client übermittelt. Mit dem Eingabewert (wird nicht übertragen) aus dieser Zahl wird der Hash gesalzen und auf dem Server vergleichen.</p> </blockquote> <p>Nein, da der Salt ja auch irgendwie übertragen oder vewandt werden muss bzw. entsprechend abgefangen werden kann.</p> <p>Wie bereits erwähnt spielt es keine Rolle ob das Passwort im Klartext, als Hash oder als gesalzener Hash übertragen wird, wenn der Angreifer bereits an einer Stelle sitzt, an der er eine unsichere Verbindung überwachen kann.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434155#m1434155 Pryos.org pryos@pryos.org 2010-03-17T16:06:44Z 2010-03-17T16:06:44Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Hallo,</p> </blockquote> <p>Hallo,</p> <blockquote> <p>Wenn es kein rein automatisierter Angriff ist, kann der Angreifer selbst ja auch einfach die Zahl auf dem Bild lesen oder er setzt halt eine Software ein, die dazu in der Lage ist. Aber dann könntest du auch einfach gleich bei jeder Passwortabfrage Captchas einsetzen, das würde kaum etwas ändern.</p> </blockquote> <p>Nur das ein reines Captcha nicht auch das Passwort schützt. Es sollte neben den Schutz vor Replay Angriffen auch dafür sorgen, das das Passwort des Nutzers nicht so leicht ermittelbar (Rückrechenbar) ist bzw der Hash sich nicht einfach für andere Seite verwenden lässt.</p> <p>Aber deiner Aussage entnehme ich, das die Schutzmaßnahme den Mehraufwand des Nutzers nicht rechtfertigt?</p> <blockquote> <p>Viele Grüße Novi</p> </blockquote> <p>mfg Pryos</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434156#m1434156 Novi 2010-03-17T16:36:29Z 2010-03-17T16:36:29Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>Nur das ein reines Captcha nicht auch das Passwort schützt. Es sollte neben den Schutz vor Replay Angriffen auch dafür sorgen, das das Passwort des Nutzers nicht so leicht ermittelbar (Rückrechenbar) ist bzw der Hash sich nicht einfach für andere Seite verwenden lässt.</p> </blockquote> <p>Ein normaler Salt würde dafür auch reichen. Er kann ruhig bekannt sein, da dies dem Angreifer beim Ermitteln eines möglichen Passwortes nicht helfen sollte.</p> <blockquote> <p>Aber deiner Aussage entnehme ich, das die Schutzmaßnahme den Mehraufwand des Nutzers nicht rechtfertigt?</p> </blockquote> <p>Ja der höhere Aufwand für den Angreifer, bedeutet in diesem Fall gleichzeitig ein höheren Aufwand für den normalen Benutzer. Der Einsatz von Captchas erschwert nur rein automatisierte Angriffe, macht sie aber längst nicht unmöglich. Captchas können häufig doch von Programmen gelesen werden. Ansonsten gibt es auch noch andere Möglichkeiten Captchas zu umgehen, indem man sie zum Beispiel von anderen Personen auf einer anderen Website lösen lässt. Der Angreifer fängt also ein Captcha ab und lässt dieses einfach von einem Benutzer auf der eigenen Website lösen. Des Weiteren könnte der Angreifer die Webseite mit den Login-Feldern so manipulieren, dass der Browser des Benutzers die Lösung des Captchas halt doch mitsendet. (Es läuft ja alles über HTTP ab.)</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434158#m1434158 Pryos.org pryos@pryos.org 2010-03-17T17:00:47Z 2010-03-17T17:00:47Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Hallo,</p> </blockquote> <p>Hallo,</p> <blockquote> <p>Ein normaler Salt würde dafür auch reichen. Er kann ruhig bekannt sein, da dies dem Angreifer beim Ermitteln eines möglichen Passwortes nicht helfen sollte.</p> </blockquote> <p>soweit ich weis kann man, wenn man Hash und Salt kennt ein "String" errechnen, welcher zum gleichen "Hash" wie das Passwort kommt. Dies sollte ausreichen um sich einloggen zu können(sowohl beim System selbst, als auch an anderen Stellen mit dem selben Passwort).</p> <p>In der Regel wird es glaube auf Grund des Rechenaufwandes nicht gemacht.</p> <blockquote> <p>Ja der höhere Aufwand für den Angreifer, bedeutet in diesem Fall gleichzeitig ein höheren Aufwand für den normalen Benutzer. Der Einsatz von Captchas erschwert nur rein automatisierte Angriffe, macht sie aber längst nicht unmöglich. Captchas können häufig doch von Programmen gelesen werden. Ansonsten gibt es auch noch andere Möglichkeiten Captchas zu umgehen, indem man sie zum Beispiel von anderen Personen auf einer anderen Website lösen lässt. Der Angreifer fängt also ein Captcha ab und lässt dieses einfach von einem Benutzer auf der eigenen Website lösen. Des Weiteren könnte der Angreifer die Webseite mit den Login-Feldern so manipulieren, dass der Browser des Benutzers die Lösung des Captchas halt doch mitsendet. (Es läuft ja alles über HTTP ab.)</p> </blockquote> <p>Das es Mittel und Wege gibt um Captchas zu lösen ist mir von einem unserer Kunden leider bekannt. Ich habe mehrere Tage benötigt um einem Spammer dort einhalt zu gebieten, Captchas haben nichts gebracht. Erst per HonyPot und dem Verbot von irgendwelchen Tags in Kommentarfeldern hab ich ihn gestopt. Jetzt kommt nurnoch alle 2 Wochen ein halbherziger Versuch von jeweils 2 IPs.</p> <p>Für einen Manipulationsversuch des Logins müsste der "Feind" so viel Kontrolle über die HTTP Verbindung haben, das jede Aktion, abgesehen von eventuell SSL, für die Katz sein. Weil dann kann er auch gleich das Klartextpasswort mitsenden (notfalls in einem weiteren Hidden Input Element)</p> <p>Aber du hast mich Überzeugt, ich hab die Idee verworfen. Der Entwicklungsaufwand sollte schon den Nutzen nicht übersteigen.</p> <blockquote> <p>Viele Grüße Novi</p> </blockquote> <p>mfg Pryos</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434157#m1434157 suit suit@rebell.at http://rebell.at/ 2010-03-22T15:18:31Z 2010-03-22T15:18:31Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Ein normaler Salt würde dafür auch reichen. Er kann ruhig bekannt sein, da dies dem Angreifer beim Ermitteln eines möglichen Passwortes nicht helfen sollte.</p> </blockquote> <p>Doch, genau das tut ein Salt: er hilft bei der ermittlung des Klartextpassworts und vermindert dadurch die Sicherheit des Klartextpassworts.</p> <p>Zwar sind Kollisionen extrem unwahrscheinlich doch bei einer Kollision und unter Kenntnis des Salt-Algorithmus kann man das Klartextpasswort wesentlich sicherer bestimmen als ohne Salt.</p> <blockquote> <blockquote> <p>Aber deiner Aussage entnehme ich, das die Schutzmaßnahme den Mehraufwand des Nutzers nicht rechtfertigt?</p> </blockquote> <p>Ja der höhere Aufwand für den Angreifer, bedeutet in diesem Fall gleichzeitig ein höheren Aufwand für den normalen Benutzer.</p> </blockquote> <p>Der der vergleichsweise geringe Zusatzaufwand spielt bei einem gezielten Angriff auf ein einzelnes Passwort oder Login keine Rolle.</p> <p>Salts helfen vorrangig zum Massenhaften schützen von schlechten Passwörtern, aber nur unwesentlich zum Schutz eines einzelnen Passworts.</p> <blockquote> <p>Der Einsatz von Captchas erschwert nur rein automatisierte Angriffe, macht sie aber längst nicht unmöglich.</p> </blockquote> <p>Pryos.org hat das denke ich in einem anderen Kontext gemeint, sprich der sich einloggende Benutzer soll den Salt nur in der Art eines Captachs selbst eingeben.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434160#m1434160 Novi 2010-03-17T17:50:40Z 2010-03-17T17:50:40Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p>soweit ich weis kann man, wenn man Hash und Salt kennt ein "String" errechnen, welcher zum gleichen "Hash" wie das Passwort kommt. Dies sollte ausreichen um sich einloggen zu können(sowohl beim System selbst, als auch an anderen Stellen mit dem selben Passwort).</p> </blockquote> <p>ja berechnen trifft es nicht ganz. Man kann über ein vorgefertigtes Wörterbuch einem Brute-Force-Attack oder aus einer Mischung von beiden eine möglichen Schlüssel erhalten. Er kann nicht direkt berechnet werden. Ob man den Salt kennt oder nicht, mach natürlich nur aufgrund der Länge einen Unterschied. Kurze Passwörter sind sehr anfällig für Brute-Force-Attacks.</p> <blockquote> <p>In der Regel wird es glaube auf Grund des Rechenaufwandes nicht gemacht.</p> </blockquote> <p>Ja, damit hast du recht.</p> <blockquote> <blockquote> <p>Ja der höhere Aufwand für den Angreifer, bedeutet in diesem Fall gleichzeitig ein höheren Aufwand für den normalen Benutzer. Der Einsatz von Captchas erschwert nur rein automatisierte Angriffe, macht sie aber längst nicht unmöglich. Captchas können häufig doch von Programmen gelesen werden. Ansonsten gibt es auch noch andere Möglichkeiten Captchas zu umgehen, indem man sie zum Beispiel von anderen Personen auf einer anderen Website lösen lässt. Der Angreifer fängt also ein Captcha ab und lässt dieses einfach von einem Benutzer auf der eigenen Website lösen. Des Weiteren könnte der Angreifer die Webseite mit den Login-Feldern so manipulieren, dass der Browser des Benutzers die Lösung des Captchas halt doch mitsendet. (Es läuft ja alles über HTTP ab.)</p> </blockquote> <p>Für einen Manipulationsversuch des Logins müsste der "Feind" so viel Kontrolle über die HTTP Verbindung haben, das jede Aktion, abgesehen von eventuell SSL, für die Katz sein. Weil dann kann er auch gleich das Klartextpasswort mitsenden (notfalls in einem weiteren Hidden Input Element)</p> </blockquote> <p>Da hast du natürlich recht, dass hätte ich schon bei der bisherigen Diskussion einbringen sollen. Demnach wäre das Hashen von Passwörtern sogar komplett sinnlos, da es nur erfolgt, wenn der Angreifer die Seite nicht manipulieren kann. Wenn er in der Lage ist Pakete mitzulesen, müsste er sie eigentlich auch ohne einen erheblichen Mehraufwand verändern können. Ich kenne mich ehrlich gesagt in der praktischen Durchführung eines Angriffes nicht mehr gut genug aus, um den Mehraufwand beurteilen zu können. Theoretisch ist es aber definitiv möglich.</p> <blockquote> <p>Aber du hast mich Überzeugt, ich hab die Idee verworfen. Der Entwicklungsaufwand sollte schon den Nutzen nicht übersteigen.</p> </blockquote> <p>Für mich gibt es eigentlich nur zwei sinnvolle Lösungen: Entweder das Passwort im Klartext versenden oder TLS einzusetzen. Dabei gehe ich davon aus, das es nicht jedem möglich ist, einfach mal den Traffic eines Benutzers abzuhorchen oder zu manipulieren. Man müsste wahrscheinlich in das lokale Netz des Benutzers oder direkt in seinen Rechner eindringen oder irgendwie einen Namensserver manipulieren, sodass sich der Angreifer dazwischen schalten kann. Diesen Aufwand macht man sich wahrscheinlich keiner, wenn es sich nicht lohnt. Den normalen Anwender und auch viele Personen mit Erfahrung im Programmieren, sollte man jedoch von einem Angriff abhalten können. Jetzt könnte man natürlich argumentieren, dass professionelle Angreifer erfolgreich sein würde, jedoch könnte man diese auch nicht durch irgendwelche Javascript-Lösungen beeindrucken. Auch die vermeidliche Sicherheit durch Hashen könnten diese aushebeln, indem sie Seiten manipulieren. Wenn man also solche Angriffe für möglich hält und nach Abwägung von Kosten und Nutzen bereit ist sich dafür ein Zertifikat zu kaufen, dann sollte man dies tun. Alle andere Lösungen sind jedoch quatsch. Entweder alles oder nichts. Das ist meine persönliche Meinung.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434159#m1434159 suit suit@rebell.at http://rebell.at/ 2010-03-22T15:22:51Z 2010-03-22T15:22:51Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>In der Regel wird es glaube auf Grund des Rechenaufwandes nicht gemacht.</p> </blockquote> <p>Der Rechenaufwand bei einem Salt-Algorithmus ist idR. fast nicht vorhanden: hash(password + salt)</p> <p>Der Grund warum man es nicht macht ist meistens Faulheit oder Unwissen.</p> <blockquote> <p>Weil dann kann er auch gleich das Klartextpasswort mitsenden (notfalls in einem weiteren Hidden Input Element)</p> </blockquote> <p>Darum sagte ich ja, dass es in jedem erdenkbaren Szenario keine große Rolle spielt ob Klartext, Hash oder salted Hash.</p> <p>Wenn der Angreifer hingegen den Traffic nicht überwachen kann ist es ebenfalls egal.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434163#m1434163 Pryos.org pryos@pryos.org 2010-03-18T09:25:35Z 2010-03-18T09:25:35Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Hallo,</p> </blockquote> <p>Hallo,</p> <blockquote> <p>ja berechnen trifft es nicht ganz. Man kann über ein vorgefertigtes Wörterbuch einem Brute-Force-Attack oder aus einer Mischung von beiden eine möglichen Schlüssel erhalten. Er kann nicht direkt berechnet werden. Ob man den Salt kennt oder nicht, mach natürlich nur aufgrund der Länge einen Unterschied. Kurze Passwörter sind sehr anfällig für Brute-Force-Attacks.</p> </blockquote> <p>Ich hab mich nie sehr damit beschäftigt. Ich weis nur das es sehr aufwändig ist.</p> <blockquote> <p>Da hast du natürlich recht, dass hätte ich schon bei der bisherigen Diskussion einbringen sollen. Demnach wäre das Hashen von Passwörtern sogar komplett sinnlos, da es nur erfolgt, wenn der Angreifer die Seite nicht manipulieren kann. Wenn er in der Lage ist Pakete mitzulesen, müsste er sie eigentlich auch ohne einen erheblichen Mehraufwand verändern können. Ich kenne mich ehrlich gesagt in der praktischen Durchführung eines Angriffes nicht mehr gut genug aus, um den Mehraufwand beurteilen zu können. Theoretisch ist es aber definitiv möglich.</p> </blockquote> <blockquote> <p>Für mich gibt es eigentlich nur zwei sinnvolle Lösungen: Entweder das Passwort im Klartext versenden oder TLS einzusetzen. Dabei gehe ich davon aus, das es nicht jedem möglich ist, einfach mal den Traffic eines Benutzers abzuhorchen oder zu manipulieren. Man müsste wahrscheinlich in das lokale Netz des Benutzers oder direkt in seinen Rechner eindringen oder irgendwie einen Namensserver manipulieren, sodass sich der Angreifer dazwischen schalten kann. Diesen Aufwand macht man sich wahrscheinlich keiner, wenn es sich nicht lohnt. Den normalen Anwender und auch viele Personen mit Erfahrung im Programmieren, sollte man jedoch von einem Angriff abhalten können. Jetzt könnte man natürlich argumentieren, dass professionelle Angreifer erfolgreich sein würde, jedoch könnte man diese auch nicht durch irgendwelche Javascript-Lösungen beeindrucken. Auch die vermeidliche Sicherheit durch Hashen könnten diese aushebeln, indem sie Seiten manipulieren. Wenn man also solche Angriffe für möglich hält und nach Abwägung von Kosten und Nutzen bereit ist sich dafür ein Zertifikat zu kaufen, dann sollte man dies tun. Alle andere Lösungen sind jedoch quatsch. Entweder alles oder nichts. Das ist meine persönliche Meinung.</p> </blockquote> <p>Unterschätze nicht den Gewinn, wenn du einigen Tausend Usern eine falsche Loginseite zu einem MMO wie z.b. WOW unter jubeln kannst um danach deren Account zu plündern. Allerdings weis ich nicht, wie man mehreren effektiv einen falschen DNS Server unter jubeln möchte, da sind Trojaner und Sniffer vermutlich leichter.</p> <p>Das Problem an den Zertifikaten ist leider das die nicht billig sind und irgendwo versteh ich nicht, warum dieses Verschlüsselungssystem solch hohe Kosten voraussetzt. Gerade selbstlose oder private Projekte fahren am Anfang nicht genug ein für so etwas, selbst wenn das Projekt eine Verschlüsselung rechtfertigt.</p> <blockquote> <p>Viele Grüße Novi</p> </blockquote> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434161#m1434161 suit suit@rebell.at http://rebell.at/ 2010-03-22T15:29:24Z 2010-03-22T15:29:24Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>ja berechnen trifft es nicht ganz. Man kann über ein vorgefertigtes Wörterbuch einem Brute-Force-Attack oder aus einer Mischung von beiden eine möglichen Schlüssel erhalten. Er kann nicht direkt berechnet werden. Ob man den Salt kennt oder nicht, mach natürlich nur aufgrund der Länge einen Unterschied. Kurze Passwörter sind sehr anfällig für Brute-Force-Attacks.</p> </blockquote> <p>Der Salt-Wert ist idR. bekannt und muss auch nicht versteckt werden, da er nur dazu dient die Entropie zu erhöhen und das Massenhafte "entschlüsseln" von Passwörtern zu erschweren.</p> <p>Zudem sollte ein Salt-Wert immer so lange sein und so eine große Varianz besitzen, dass er unmöglich in einem Dictionary oder einer vollumfänglichen Brute-Force-Liste vorkommen wird.</p> <p>Zusätzlich einen geheimen Hash zu verwenden ist natürlich immer noch möglich - in diesem Szenario (ein Login zu schützen) aber unsinnig:</p> <blockquote> <p>Da hast du natürlich recht, dass hätte ich schon bei der bisherigen Diskussion einbringen sollen. Demnach wäre das Hashen von Passwörtern sogar komplett sinnlos, da es nur erfolgt, wenn der Angreifer die Seite nicht manipulieren kann. Wenn er in der Lage ist Pakete mitzulesen, müsste er sie eigentlich auch ohne einen erheblichen Mehraufwand verändern können. Ich kenne mich ehrlich gesagt in der praktischen Durchführung eines Angriffes nicht mehr gut genug aus, um den Mehraufwand beurteilen zu können. Theoretisch ist es aber definitiv möglich.</p> </blockquote> <p><a href="http://www.wireshark.org/" rel="nofollow noopener noreferrer">Wireshark</a> + ein HTML-Formular (selbst erstellt, entsprechend dem Login-Formular) und los: egal ob Klartext, HHash oder salted Hash - in wenigen Minuten ist das Login geknackt.</p> <blockquote> <p>Für mich gibt es eigentlich nur zwei sinnvolle Lösungen: Entweder das Passwort im Klartext versenden oder TLS einzusetzen.</p> </blockquote> <p>Sagte ich das nicht die ganze Zeit? ;) Entweder Klartext oder gleich SSL bzw. TSL wie's mittlerweile heißt :p</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434162#m1434162 Novi (uneingeloggt) 2010-03-22T23:53:56Z 2010-03-22T23:53:56Z Sicherer Javascript Passwortschutz ?! <p>Hallo,</p> <blockquote> <p><a href="http://www.wireshark.org/" rel="nofollow noopener noreferrer">Wireshark</a> + ein HTML-Formular (selbst erstellt, entsprechend dem Login-Formular) und los: egal ob Klartext, HHash oder salted Hash - in wenigen Minuten ist das Login geknackt.</p> <blockquote> <p>Für mich gibt es eigentlich nur zwei sinnvolle Lösungen: Entweder das Passwort im Klartext versenden oder TLS einzusetzen.</p> </blockquote> <p>Sagte ich das nicht die ganze Zeit? ;) Entweder Klartext oder gleich SSL bzw. TSL wie's mittlerweile heißt :p</p> </blockquote> <p>Ja, da sind wir uns denke ich auch einig. Nur ich sage zusätzlich noch, dass man auf das Hashen von Passwörtern getrost verzichten kann, weil man die Website ja eh manipulieren kann ohne TLS. Das war ja auch die eigentliche Diskussion.</p> <p>Übrigens ich habe dem Autor mal eine E-Mail geschickt.</p> <p>Viele Grüße Novi</p> <div class="signature">-- <br> "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland) </div> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434164#m1434164 suit suit@rebell.at http://rebell.at/ 2010-03-22T15:42:33Z 2010-03-22T15:42:33Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>Ich hab mich nie sehr damit beschäftigt. Ich weis nur das es sehr aufwändig ist.</p> </blockquote> <p>Eigentlich nicht - eine "Endlosschleife" der jeweils Hashes und Klartext in einer CSV-Datei abspeichert ist schnell geschrieben.</p> <p>Das ist zwar nicht die platzsparenste Variante, aber dumme Passwörter erwischt man damit allemal.</p> <p>Alternativ kann man natürlich auch "live" testen und so lange Klartextpasswörter hashe/ausprobieren, bis man eine übereinstimmung mit dem Wunschhash gefunden hat.</p> <p>Programmieraufwand in beiden Fällen etwa 5 Minuten.</p> <p>Je nach Rechenleistung hat man ein <= 8 stelliges Passwort bestehend aus a-zA-Z0-9 in ein paar Stunden geknackt.</p> <blockquote> <p>Unterschätze nicht den Gewinn, wenn du einigen Tausend Usern eine falsche Loginseite zu einem MMO wie z.b. WOW unter jubeln kannst um danach deren Account zu plündern. Allerdings weis ich nicht, wie man mehreren effektiv einen falschen DNS Server unter jubeln möchte, da sind Trojaner und Sniffer vermutlich leichter.</p> </blockquote> <p>Braucht man doch garnicht - anstatt beliebigesmmorpg.example.com registeriert man sich einfach mal beIiebigesmmorpg.example.com oder beliebigesmm0rpg.example.com.</p> <p>Klassische Phishing-Vorgehensweise: Massenmail versenden mit der bitte seine Accountdaten zu prüfen, weil die kürzlich die AGB geändert wurden.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434169#m1434169 Kambfhase 2010-03-12T17:38:51Z 2010-03-12T17:38:51Z Sicherer Javascript Passwortschutz ?! <blockquote> <p>document.write(unescape(v)); durch alert(v); ersetzen und schon hat mans.</p> </blockquote> <p>fast noch einfacher:</p> <p>Man wähle eine Zahl zwischen 1 und 9, berechne daraus ein kompliziertes b und gehe dann auf "privat.html?"+a+b; done.</p> https://forum.selfhtml.org/self/2010/mar/12/sicherer-javascript-passwortschutz/1434170#m1434170 Encoder 2010-03-12T18:38:22Z 2010-03-12T18:38:22Z Sicherer Javascript Passwortschutz ?! <p>Ok, davon abgesehen dass a und b hier wahrscheinlich als Parameter gedacht sind und diese sehr komplizierte Formel dann irgendwo wieder mit diesen Werten geprüft wird ;-)</p>