superchallenge_pass und IE8 Problem

  • 0 x
    127 Beiträge
    0 Hilfreiche Beiträge
    27. 05. 2009, 18:24

    Hallo alle zusammen.
    Ich musste gerade mit entsetzen feststellen, dass der IE8 wohl ein Problem mit dem JavaScript hat, welches ein PWD in MD5 verschlüsselt.

    Folgendes Script benutze ich:

    1. <?php
    2. class user_md5fepw {
    3. function md5Challenge($content, $conf) {
    4. $js = '
    5. function superchallenge_pass(form) {
    6. var pass = form.pass.value;
    7. if (pass) {
    8. //alert(pass);
    9. form.pass.value = MD5(form.user.value + ":" + MD5(pass) + ":" + form.challenge.value);
    10. //alert(form.pass.value);
    11. return true;
    12. } else { return false; }
    13. }';
    14.  
    15. $GLOBALS['TSFE']->JSCode .= $js;
    16. $GLOBALS['TSFE']->additionalHeaderData['tx_kbmd5fepw_newloginbox'] = '<script language="JavaScript" type="text/javascript" src="typo3/md5.js"></script>';
    17. $chal_val = md5(time().getmypid());
    18. $res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_kbmd5fepw_challenge', array('challenge' => $chal_val, 'tstamp' => time()));
    19. return '<input type="hidden" name="challenge" value="'.$chal_val.'" />';
    20. }
    21. }
    22. ?>

    Im IE 6, IE7, FF2, FF3, Opera, Safari usw funktioniert das problemlos. Jedoch beim IE8 nicht.

    Hat da jemand eine Idee?

    Cross Posting: [url]http://www.typo3forum.net/forum/typo3-3-x-fragen-probleme/38039-superchallenge_pass-ie8.html#post127931[/url]


  • 1
  • jcghh jcghh
    T3PO
    0 x
    9 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2009, 09:39

    Hallo digitalfreak,
    hast Du schon eine Lösung? ich habe hier gerade dasselbe Problem und kann die Ursache nicht finden...

  • 0 x
    127 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2009, 14:07

    Bisher nicht. Ich habe es mal als Bug in den Bugtracker aufgenommen.
    [url]http://bugs.typo3.org/view.php?id=11491[/url]

  • bpaulsen bpaulsen
    Padawan
    0 x
    43 Beiträge
    1 Hilfreiche Beiträge
    11. 09. 2009, 15:14

    Hallo,

    danke für den Hinweis mit dem Bug, aber ich kapiere nicht was ich da austauchen soll? ich habe die NewLoginBox nicht, ich habe nur felogin den nachfolger, wenn ich aber die Funktionen die im Bug angegeben wurden öffne, sind es die gleichen wie in kb_md5fepw Datei class.tx_kbmd5fepw_newloginbox.php

    Also ich verstehe einfach nicht was ich da austauschen soll?
    die md5.js ist die Umlaut sicher? Die originale ist es nämlich nicht!

    Gruß

    Björn

  • ristic ristic
    Sternenflotten-Admiral
    0 x
    166 Beiträge
    0 Hilfreiche Beiträge
    13. 10. 2009, 11:04

    Hi,

    http://bugs.typo3.org/view.php?id=11491 hier sagt Torsten schon das das JS nicht passt. Die md5-Verschlüsselung läuft falsch.

    Versucht mal folgendes:
    class.tx_kbmd5fepw_newloginbox.php

    1. require_once(t3lib_extMgm::extPath('kb_md5fepw').'class.tx_kbmd5fepw_funcs.php');
    2. require_once(PATH_tslib.'class.tslib_pibase.php');
    3. class tx_kbmd5fepw_newloginbox extends tslib_pibase {
    4.  
    5. function forgotPassword(&$params, &$ref) {
    6. $this->conf = $ref->conf;
    7. $this->pi_setPiVarDefaults();
    8. $this->scriptRelPath = 'pi1/class.tx_kbmd5fepw_newloginbox.php';
    9. $this->extKey = 'kb_md5fepw';
    10. $this->pi_loadLL(1); // Loading the LOCAL_LANG values
    11. $d=$GLOBALS['TSFE']->getStorageSiterootPids();
    12.  
    13. $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid, username, password', 'fe_users', 'email='.$GLOBALS['TYPO3_DB']->fullQuoteStr(trim($ref->piVars['DATA']['forgot_email']), 'fe_users').' AND pid='.intval($d['_STORAGE_PID']).' '.$GLOBALS['TSFE']->cObj->enableFields('fe_users'));
    14. if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
    15. $new_password = tx_kbmd5fepw_funcs::generatePassword(intval($GLOBALS['TSFE']->config['plugin.']['tx_newloginbox_pi1.']['defaultPasswordLength'])?intval($GLOBALS['TSFE']->config['plugin.']['tx_newloginbox_pi1.']['defaultPasswordLength']):5);
    16. $GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users', 'uid='.$row['uid'], array('password' => md5($new_password)));
    17. $msg=sprintf($this->pi_getLL('forgot_password_pswmsg','',1),trim($this->piVars['DATA']['forgot_email']),$row['username'],$new_password);
    18. } else {
    19. $msg=sprintf($this->pi_getLL('forgot_password_no_pswmsg','',1),trim($this->piVars['DATA']['forgot_email']));
    20. }
    21. $params['msg'] = $msg;
    22. return true;
    23. }
    24. function loginFormOnSubmit(&$params, &$ref) {
    25. $js = '
    26. function superchallenge_pass(form) {
    27. var pass = form.pass.value;
    28. if (pass) {
    29. var enc_pass = MD5(pass);
    30. var str = form.user.value+":"+enc_pass+":"+form.challenge.value;
    31. form.pass.value = MD5(str);
    32. return true;
    33. } else {
    34. return false;
    35. }
    36. }
    37. ';
    38. $GLOBALS['TSFE']->JSCode .= $js;
    39. $GLOBALS['TSFE']->additionalHeaderData['tx_kbmd5fepw_newloginbox'] = '<script language="JavaScript" type="text/javascript" src="fileadmin/js/md5.js" charset="UTF-8"></script>';
    40. $chal_val = md5(time().getmypid());
    41. $res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_kbmd5fepw_challenge', array('challenge' => $chal_val, 'tstamp' => time()));
    42. $onSubmit = 'superchallenge_pass(this)';
    43. $hidden = '<input type="hidden" name="challenge" value="'.$chal_val.'">';
    44. return array($onSubmit, $hidden);
    45. }
    46.  
    47. }

    Den Pfad zum neuem md5.js natürlich anpassen. Das bekommt ihr hier.
    http://www.webtoolkit.info/javascript-md5.html

    Und benutzt den felogin, nicht mehr die newloginbox, wird nicht mehr weiterentwickelt.

    Hoffe es hilft. (bei mir funktioniert es)

  • 1