PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Passwort-Länge bei Änderung prüfen/vorschreiben


MrZeropage
10.08.2004, 08:05
Diese kleine Modifikation stellt sicher, dass bei der Änderung des Passworts eine Mindestlänge verwendet werden muss, ansonsten kann das Passwort nicht geändert werden und es wird eine Fehlermeldung ausgegeben, wie lang das PW sein muss.

Danke an Mystics für die Hilfe mit der Wertübergabe aus dem JavaScript :)

Die Modifikation ist so ausgelegt, dass ein neues Passwort mindestens 8 Zeichen haben muss - diese Zahl kann selbstverständlich geändert werden, die relevanten Stellen (2 Stück, einmal im PHP-File, einmal in der Phrase) sind im nachfolgenden Text rot markiert.



Öffne profile.php

Finde:globalize($_POST, array('currentpassword' => STR, 'currentpassword_md5' => STR, 'newpassword' => STR, 'newpasswordconfirm' => STR, 'newpassword_md5' => STR, 'newpasswordconfirm_md5' => STR, 'email' => STR, 'emailconfirm' => STR));und ERSETZE diese mitglobalize($_POST, array('currentpassword' => STR, 'currentpassword_md5' => STR, 'newpassword' => STR, 'newpasswordconfirm' => STR, 'newpassword_md5' => STR, 'newpasswordconfirm_md5' => STR, 'npwlength' => INT, 'email' => STR, 'emailconfirm' => STR));

Finde: if (!empty($newpassword) OR !empty($newpassword_md5))und füge DARÜBER ein // Password-Security-Hack
if ($npwlength > 0 AND $npwlength <= 7)
{
eval(print_standard_error('unsecurepassword'));
}
// End Password-Security-Hack

Speichere die modifizierte Datei profile.php.


Öffne das Template modifypassword und ersetze den kompletten Inhalt mit:<script type="text/javascript" src="clientscript/vbulletin_md5.js"></script>
<script type="text/javascript">
function hash_passwords(currentpassword, currentpassword_md5, newpassword, newpassword_md5, newpasswordconfirm, newpasswordconfirm_md5, npwlength)
{
npwlength.value = newpassword.value.length;
md5hash(currentpassword, currentpassword_md5);
// do various checks
if (newpassword.value != '')
{
md5hash(newpassword, newpassword_md5);
}
if (newpasswordconfirm.value != '')
{
md5hash(newpasswordconfirm, newpasswordconfirm_md5);
}
}
</script>

<form name="changepw" action="profile.php" method="post" onsubmit="hash_passwords(currentpassword, currentpassword_md5, newpassword, newpassword_md5, newpasswordconfirm, newpasswordconfirm_md5, npwlength)">
<input type="hidden" name="s" value="$session[sessionhash]" />
<input type="hidden" name="do" value="updatepassword" />
<input type="hidden" name="currentpassword_md5" />
<input type="hidden" name="newpassword_md5" />
<input type="hidden" name="newpasswordconfirm_md5" />
<input type="hidden" name="npwlength" />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="tcat">$vbphrase[edit_email_and_password]</td>
</tr>

<tr>
<td class="panelsurround" align="center">
<div class="panel">
<div style="width:$stylevar[formwidth_usercp]" align="$stylevar[left]">

<if condition="$show['passwordexpired']">
<div class="smallfont">
<strong>$vbphrase[current_password_expired]</strong>
</div>
</if>

<div class="fieldset">
<div>$vbphrase[enter_password_to_continue]:</div>
<div><input type="password" class="bginput" name="currentpassword" size="50" maxlength="50" /></div>
</div>

<fieldset class="fieldset">
<legend>$vbphrase[edit_password]<if condition="$show['password_optional']"> ($vbphrase[optional])</if></legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
<tr>
<td>
<div>$vbphrase[new_password]:</div>
<div><input type="password" class="bginput" name="newpassword" size="50" maxlength="50" /></div>
</td>
</tr>
<tr>
<td>
<div>$vbphrase[confirm_new_password]:</div>
<div><input type="password" class="bginput" name="newpasswordconfirm" size="50" maxlength="50" /></div>
</td>
</tr>
</table>
</fieldset>

<fieldset class="fieldset">
<legend>$vbphrase[edit_email_address] ($vbphrase[optional])</legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
<tr>
<td>
<div>$vbphrase[new_email_address]:</div>
<div><input type="text" class="bginput" name="email" value="$bbuserinfo[email]" size="50" maxlength="50" /></div>
</td>
</tr>
<tr>
<td>
<div>$vbphrase[confirm_new_email_address]:</div>
<div><input type="text" class="bginput" name="emailconfirm" value="$bbuserinfo[email]" size="50" maxlength="50" /></div>
</td>
</tr>
</table>
</fieldset>

</div>
</div>

<div style="margin-top:$stylevar[cellpadding]px">
<input type="submit" class="button" value="$vbphrase[save_changes]" accesskey="s" />
<input type="reset" class="button" value="$vbphrase[reset_fields]" accesskey="r" />
</div>
</td>
</tr>
</table>

</form>

Speichere das Template.


In der Phrasenverwaltung wähle als Phrasentyp "Benutzeroberfläche: Fehlermeldungen" und füge dort eine neue Phrase hinzu:

Variablenname : unsecurepassword
Text : Das angegebene Passwort entspricht nicht den Sicherheits-Richtlinien, bitte verwende ein Kennwort mit <b>mindestens 8 Zeichen.</b><br><br>Klicke hier um das <a href="profile.php?$session[sessionurl]do=editpassword">Kennwort zu ändern</a>.


Viel Spass, stay tuned :cool:

Don B.
19.09.2004, 16:59
Danke, danach habe ich schon ewig gesucht. Das wäre auch was, was ich gern im ACP von grundauf sehen wollen würde. Das man selbst einstellen kann wieviele Zeichen ein Passwort mind. lang sam muss, und/oder mit Zahlen sind.

Ggf. noch mit einer Grafischen-Anzeige der sicherheit a là GMX.de oÄ.

Wäre mal sau geil, aber nee, sowas wird ja leider nicht gemacht :(


cheers

MrZeropage
20.09.2004, 19:25
Joo, die grafische Anzeige für die User wäre gigantisch, hat jemand ein Script für sowas ?

Ansonsten finde ich auch, dass das in vBulletin 3.0.4 fest eingebaut gehört, einstellbar über AdminCP ... :)