スキップしてメイン コンテンツに移動

パスワードの強さを表示するjQueryプラグイン「password_strength_plugin」(js解説付き)

こんにちは、クリエイティブフレークです。





Webサイトでパスワードを入力すると自動的にそのパスワードの強さを表示してくれるやつです。

そのシンプルで設置も簡単、オリジナルの強さに書き換えるのも簡単なjQuery「password_strength_plugin」の紹介と解説です。



↓↓まずはjQuery本体↓↓
jQuery (Google Hosted)

※今回はダウンロードせずGoogleに読みに行かせています。



↓↓そしてpassword_strength_pluginのダウンロード↓↓
password_strength_plugin





まずはHTMLから!!

<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td align="right"><label>ユーザー名 : </label></td>
<td><input type="text" name="user_name" id="user_id"></td>
</tr>
<tr>
<td align="right"><label>パスワード : </label></td>
<td><input type="password" name="pass_word" class="password_test"></td>
</tr>
</table>


・tabelタグじゃなくてもリストでも、何でもいいのですが、ユーザー名とパスワードを入力させるinputボックスを作ります。
・JavaScriptで必要となるので、ユーザー名のボックスにはidを付けておきましょう。



次にJavaScript↓

$(document).ready( function() {
 $(".password_test").passStrength({
  userid: "#user_id"
 });
});


・HTML内に記述しても(<script type="text/javascript">●●●</script> ●●●内に記述)、外部ファイルから読ませてもOK



本題のpassword_strength_plugin.js を抜粋↓

▼34行目〜38行目

$.fn.shortPass = 'Too short';
$.fn.badPass = 'Weak';
$.fn.goodPass = 'Good';
$.fn.strongPass = 'Strong';
$.fn.samePassword = 'Username and Password identical.';


これが結果表示されるので、必要に応じて日本語だったり、好きな言葉に書き換えてください。

▼77行目〜122行目

$.fn.teststrength = function(password,username,option){
var score = 0; 

//password < 4
if (password.length < 4 ) { this.resultStyle =  option.shortPass;return $(this).shortPass; }

//password == user name
if (password.toLowerCase()==username.toLowerCase()){this.resultStyle = option.badPass;return $(this).samePassword;}

//password length
score += password.length * 4;
score += ( $.fn.checkRepetition(1,password).length - password.length ) * 1;
score += ( $.fn.checkRepetition(2,password).length - password.length ) * 1;
score += ( $.fn.checkRepetition(3,password).length - password.length ) * 1;
score += ( $.fn.checkRepetition(4,password).length - password.length ) * 1;

//password has 3 numbers
if (password.match(/(.*[0-9].*[0-9].*[0-9])/)){ score += 5;} 

//password has 2 symbols
if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){ score += 5 ;}

//password has Upper and Lower chars
if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){  score += 10;} 

//password has number and chars
if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)){  score += 15;} 
//
//password has number and symbol
if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)){  score += 15;} 

//password has char and symbol
if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)){score += 15;}

//password is just a numbers or chars
if (password.match(/^\w+$/) || password.match(/^\d+$/) ){ score -= 10;}

//verifying 0 < score < 100
if ( score < 0 ){score = 0;} 
if ( score > 100 ){  score = 100;} 

if (score < 34 ){ this.resultStyle = option.badPass; return $(this).badPass;} 
if (score < 68 ){ this.resultStyle = option.goodPass;return $(this).goodPass;}

this.resultStyle= option.strongPass;
return $(this).strongPass;


このjsの中枢、計算式です。
このjsは「ポイント制」でよいパスワードには加点、悪いパスワードだったら減点していき、0点〜100点で判断します。



計算結果の判別
最後の方にもありますが、
・34点未満・・・badPass(悪いパスワード)
・68点未満・・・goodPass(よいパスワード)
・68点以上・・・strongPass(強いパスワード)
となっています。

※0点未満=0、100点以上=100としています。



パスワードが短すぎるとき
最初の方に戻って、1文字〜3文字はshortPass(短すぎるパスワード)としています。 ↑
例えば、パスワードを6文字以上とさせたいなら、
if (password.length < 6 ) { this.resultStyle = option.shortPass;return $(this).shortPass; }
としましょう。



パスワードがユーザー名と同じだったとき
また、ユーザー名とパスワードが一緒ならsamePasswordとしています。



ポイントに関するルール
・パスワードに2つの記号が含まれている・・・プラス5点
・パスワードにアルファベットの大文字と小文字がある・・・プラス10点
・パスワードがアルファベットと数字から構成されている・・・プラス15点
・パスワードがアルファベットと記号から構成されている・・・プラス15点
・パスワードが数字だけ、またはアルファベットだけ・・・マイナス10点



パスワードの長さに関する計算
ここにも注意したいのが、
パスワードの長さ×4=点数
としていますが、いくらパスワードが長くても例えば「1111111」や「abababab」などのように、規則的な繰り返しがあるとよいパスワードとはいえません。

そこで、88行目〜91行目では1文字の繰り返し(例:aaaaa)、2文字の繰り返し(例:ababab)、3文字の繰り返し(例:abcabc)、4文字の繰り返し(例:abcdabcd)には加点させていないことに注意です。



「password_strength_plugin」のサンプルデモ




Written by Creative Flake

コメント

このブログの人気の投稿

ブログ移転のお知らせ

いつもご覧いただきありがとうございます。 当ブログは下記URLへと引っ越しました。 http://blog2.creativeflake.com/ 今後はこちらをご覧ください!!

太字にしても文字を潰さない方法「太字に強い無料の日本語フォント」付き

PhotoshopやIllustratorなどで、太文字を書きたいとき文字がつぶれて見づらいことはありませんか? つぶれ文字の場合 文字がつぶれてしまった場合の多くは、 ・ボールド「B」で太くしている ・枠線をつけて太くしている こういうケースが多く見られます。 これは、元の文字の外側に太線をつけるため、スキマが埋められてしまうことでつぶれて見えるためです。 つぶれない文字にするには 文字をつぶさないようにするには、文字そのもののウェイトで調整します。 ウェイトというのは「太さ」という意味です。 例えば、「●●ゴシック-M」とか、「▲▲明朝-W3」などという、フォント名の最後にアルファベットや数字がついているのを見たことはありませんか? まずはフォント(文字)を選ぶ際に、ウェイトのバリエーションが存在するかどうか確認してから使うことをおすすめします。 太字にできる無料の日本語フォント そもそもどんなフォントが太字のバリエーションがあるのか、今回は無料の日本語フォントを紹介します。 M+フォント やや丸みのあるやさしいイメージのゴシックフォント。 極細から太字までフォントウェイトがあります。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Kazesawaフォント こちらも丸みのある、認識性の高いフォントです。 エクストラライトからエクストラボールドまで6種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード 源ノ角ゴシック AdobeとGoogleが共同開発したオープンソースのフォントです。 エクストラライトからヘビーまで7種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード Rounded M+ 丸ゴシックのかわいい感じなのに品のあるのフォントです。 また、「標準」、「丸さ強め」、「丸さ弱め」からも選んでダウンロードが可能です。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Written by Cr...

CSS3でアニメーションを作ってみよう(理論編)

こんにちは、クリエイティブフレークです。 Windows XPのサポートが終了してから、国内のIE10のシェア率が急激に高まり、Chromeも急伸しています。 これまでどうしてもIEの古いバージョンのユーザーのことを考慮すると、完全CSS3はまだ先かなと思うところでしたが、そろそろ勉強し始めどきかもしれません。 今回はCSS3だけで動くアニメーションの簡単なサンプルを。 【デモ : DEMO】 CSS3だけでアニメーション そもそも、アニメーションといえば、 ・gif(Photoshopなどでタイムラインでコマ送り。あくまで画像なのでパラパラ漫画と同じ理論。) ・Flash(タイムラインもしくはプログラミングで制御。見るにはFlash Playerのインストールが必要。) ・jQuery(JavaScript言語を使用して動的に制御。) 時代ごとに移り変わってきましたね。 では、こんなにアニメーションは存在するのに、なんでCSS3を使いたがるの? ・gifの欠点 gifアニメーションの欠点は細かく動かすとファイル容量が大きくなります。 また、滑らかな動きには向いていません。 ・Flashの欠点 FlashはFlash Playerが必要なので、インストールしていないPCや、スマートフォンには対応していません。 ・jQueryの欠点 jQueryはプログラミング可能なので、細かく動作を指示できますが、jQueryを使用する場合、JavaScript単体とjQuery本体の組み合わせで、ファイルは大きくなります。 ここで登場するのがCSS3。以前ならマークアップ言語で動作の指示ができるなんて思ってもみませんでした。 今回の目標 ・CSSで丸や四角などの図形を描く ・CSSで回転させる ・CSSでフェードさせる 【デモ : DEMO】 CSS3だけでアニメーション ▲こんなかんじ 今回のデモのソースコードはすべてHTML内に記述してあります。 ソースコードが長いので、ここでは解説だけを記載します。 サンプルソースコードの解説 div { position: absolute !important; top: calc(50% - 100px); left...