2016-08-24 8 views
0

ログインページが1つあります。ユーザーがユーザー名とパスワードを入力すると、パスワードを暗号化してサーバーに送信します。私は角度のjsアプリケーションを使用しているので、私は角度でもそのコードを書いてみたい。AngularJSでのパスワードの暗号化

+2

httpsをお探しですか? – Weedoze

+0

@KISHAN PATIパスワードを暗号化するために角度を使用しないことをお勧めします。 バックエンドテクノロジのJavaを使用するか、これまで使用していたものを使用します –

+0

これを暗号化せずにHTTPS経由で送信し、 – dfsq

答えて

5

HTTPSを使用してサーバーに送信し、サーバー側で暗号化/復号化します。セキュリティ上の理由から、フロントエンドに暗号化を行わせたくない場合、深刻なセキュリティ上の欠陥につながる可能性があります。

-2

次のngEncryptionファクトリを使用すると、Controller.jsファイルのデータを暗号化してapicontrollerに渡すことができます。私はPublic/Privateキーを使って暗号化/復号化のためのデータを暗号化しています。これらのキーはGlobal.asax.csファイルのSession_Start()イベントで生成できます。

app.factory 
('ngEncryption', function() { 
    return { 
     encrypt: function (dataForEncrypt) { 
      jsRequest = {}; 

      var str = dataForEncrypt; 
      var xmlParams = $.cookie('ClientPublicKey'); 
      // Create a new instance of RSACryptoServiceProvider. 
      var rsa = new System.Security.Cryptography.RSACryptoServiceProvider(); 
      var reqArray = []; 
      var reqArraySize = 200; 
      if (str.length < reqArraySize) { 
       var data = System.Text.Encoding.UTF8.GetBytes(str); 
       // Import parameters from xml. 
       rsa.FromXmlString(xmlParams); 
       // Encrypt data (use OAEP padding).   

       var encryptedBytes = rsa.Encrypt(data, true); 
       // Convert encrypted data to Base64. 
       var encryptedString = System.Convert.ToBase64String(encryptedBytes) 
       // Replace plain password with encrypted data. 
       reqArray.push(encryptedString); 
       //break; 
      } 
      else { 
       var MaxCounterHeader = parseInt(Math.ceil(parseFloat(str.length/200))); 

       for (i = 0; i < MaxCounterHeader; i++) { 
        var newstring = str.substr(0, str.length > 200 ? 200 : str.length); 
        var data = System.Text.Encoding.UTF8.GetBytes(newstring); 
        rsa.FromXmlString(xmlParams); 
        var encryptedBytes = rsa.Encrypt(data, true); 
        // Convert encrypted data to Base64. 
        var encryptedString = System.Convert.ToBase64String(encryptedBytes) 
        reqArray.push(encryptedString); 
        str = str.replace(newstring, ''); 
       } 
      } 
      return JSON.stringify(reqArray); 
     } 
    }; 
}); 
0

セキュリティで保護されたデータを送信し、サーバーで暗号化するためにhttpsを使用する方がよいでしょう。 クライアントコードで暗号化したい場合は、SHA256またはSHA1またはMD5を使用できます。多くは利用可能です。角度暗号は多くのJSを提供します。 コントローラのhtmlページと下の行にJSへの参照を含めます。

CryptoJS.SHA1($scope.newCustomer.password) 

セキュリティを強化するため、サーバー側でハッシュされたパスワードをSALTします。

+1

「SHA256またはSHA1またはMD5」のいずれも暗号化されていないため、一方向の暗号化ハッシュ関数です。また、ハッシュ関数に塩を追加するだけでセキュリティを改善することはほとんどありません。代わりに、約100msの持続時間の間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存してください。 password_hash、PBKDF2、Bcryptなどの関数を使用します。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。 – zaph

関連する問題