PHP ウェブサイト開発では、検証コードは悪意のある送信からフォームを効果的に保護できますが、計算検証コードや漢字を使用しない場合は、認証コードは単純な文字または数字のみを使用します。この認証コードのスキームは本当に安全ですか?
単純な数字や文字の検証コードは解読されやすいことは誰もが知っていますが、算数の検証コードや漢字の検証コードは解読されにくいため、検証コードを使用する場合は算数の検証コードまたは漢字の検証コードを使用することをお勧めします。コード。
以下は私が書いた 2 つの認証コードです。役に立つ友人は参照してください。
1. 計算検証コード:
コードをコピーします コードは次のとおりです:
session_start();
header("コンテンツタイプ: image/png");
$num1 = mt_rand(0,9);//最初の桁
$num2 = mt_rand(1,9);//2 桁目
$type_str = "+-*";//メソッド文字列コレクション
$type = substr($type_str,rand(0,2),1);//ランダムメソッド
$change = mt_rand(1,3);
if($change==1){
$code = "$num1$type$num2=?";
$result = "$verifyCode=$num1$type$num2;";
eval($result);
$_SESSION['authnum_session'] = $verifyCode
}elseif($change==2){
$result = "$verifyCode=$num1$type$num2;";
eval($result);
$code = $num1.$type."_=".$verifyCode;
$_SESSION['authnum_session'] = $num2;
}elseif($change==3){
$result = "$verifyCode=$num1$type$num2;";
eval($result);
$code = "_".$type.$num2."=".$verifyCode;
$_SESSION['authnum_session'] = $num1;
}
$im = imagecreate(68,28);
$black = imagecolorallocate($im, 0,0,0);
$white = imagecolorallocate($im, 255,255,255);
$gray = imagecolorallocate($im, 200,200,200);
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im,0,0,$white);
画像文字列($im, 5, 10, 8, $code, $black);
for($i=0;$i
imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $black);
imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $red);
imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $gray);
}
imagepng($im);
imagedestroy($im);
?>
2. 漢字認証コード:
コードをコピーします
コードは次のとおりです:
session_start();$ch_str="まず第一に、この国には、学生を異なる年齢に分けるために国産製品を使用する必要がある多くの人々が不和の中で存在しているということです。ファン・ジンの同僚たちは、革命後、インタビューで次のように述べています。多くの子供たちがソーシャルネットワークに参加し、質の高い長期的な党の勢力図が達成されました。反セクシュアリティと抗体の協力のロードマップは、現在の状況から新しい議論の内容を変えます。対応する形式、思考、思考、実践などの2つの才能、変化の重要なポイント、思考の強調、原因の内部除去など、毎日の利益段階は気のカルマと全体の圧力によって決まります。果実期は、各ベースまたは月毛のレベルにつながりますが、比較は、それが最も外部的なものであり、森の 5 つの解釈を見ていないことを示しています。しかし、この記事は比較的文法的かつ公共的であり、受け入れ席の流入につながり、原油の飛来を問題として設定し、地区検査活動の構築に言及し、多くの教育的決定を下しました。あなたと習近平は再選され、彼らはキモシャン・チェン・バイバオを調整し、管理の変更に身を委ねる必要があることを理解するでしょう。 、症状がいくつあるかを知っていますか、古い光の6種類は何ですか、リハビリベルトの6種類は何ですか?風が南光に戻った後、Laolunkebeiは商品を収集することを計画しており、作業は統合されており、ステップ番号は次のとおりです。リストに記載され、温度が設定され、シャフトがソリッドカラーに研磨されました。口頭判定が収集され、金メダルが判定され、基準層が停止され、万泉への境界がクリアされます。工場は海から離れていなければなりません。そして右に手渡され、子供の青少年の証明書は低く、8つのテスト規定は遠くありません、兵士は堅固で、歯は排除され、歯は何千もの勝利者であり、細かい影はジバイです。 、効果は設定され、空に押され、ブレードレートで、現在の選択は美徳を上げてから違いを確認することです、敵の半分、最初のフィルムが適用され、音が収集され、Huajueに名前が付けられ、赤が追加され、制服の薬マークは保存するのが難しく、兵士の体はタイトな液体システム、正確な重量角度、寸法削減ボード、Xu壊れた技術、底床フィールドの潜在的なエンドセンス、Hecun構造、外観、非を測定します。 -婚約、ヤモ家の消防セクション、適切な値、美しい外観、黄一表、朝勤小麦刈り文字行 台湾の声は張密を攻撃し、後草、何書飛に害を与え、右市の厳格な道をたどってカタツムリ検査をし、左ページ、抵抗する蘇仙の苦い英国人、すぐに悪い手を言う、ヘイウー・ペイ・ジュ、ヨルバチ州、針だけ、王の目を助けるために首都を植える方法彼女は苗木を捕まえ、その逆もあり、酸っぱさと古いが十分な原因となる周囲の食品放射性源について話します。ショートストローク リー・ク・チュンユアン先生 スーパーネガティブ・サンド・シーリング・チェンジ タイモ貧困削減 陽江分析 ムー・ムー・ヤン・チー・チャオ・メディカル・スクール グ・ニー・ダオ・ソン・ティン・ウェイ・シュファ・ステーション 別のウェイ・ジー・グ・ガンが書いたリウ・ウェイルー ファン・ゴン・ア・クアイ あるカンフーセットフレンド制限アイテムユウは巻き戻して法雨を作成し、グユアンにチュピボが死んだ毒のサークルを占領するのを手伝ってもらい、魏智のトレーニングと制御はユンフを見つけるために刺激し、亀裂粒粒母トレーニングプラグスチールトップポリシーダブルを維持して間違った基盤を吸ってブロックするので、クンシールド後期シルクガール散在溶接力朱プロ入院冷たく徹底的な爆撃散在ビジネスビジュアルアート破壊版嘘ゼロ部屋光血時間不足李ポンプ車覚府都市フラッシング土壌ジェーン福珠李王潘磁性男性が閉じ込められているようですゴン一州が離陸します配達奴隷側のカバーは、距離を振り、星に触れ、彼を独立した役人に送ります、広い冬の章は、鉱山の村の責任です。成熟しており、ハードな価格が保証されています。 背中が損傷しており、綿が埃に侵されていますが、羅日比は酸素を詰めて愛しています。キャンプは解散し、資金は枯渇し、塩の終わりを恐れてロシアは撤退し、蜂によって編集されたインフェンは急いで傷を拡大し、中央で振動し、振動しました。 5つのエリア、非常に高速、順不同、ペーパーフリー、夜の街、長期奉仕、シリンダークランプ、読書蘭英溝Bを補いますか、ヨンタイル、カーボンパフォーマンス、歯、ヨンタイル、斜めですか?灌漑、ヨーロッパと旬の豚、外国の腐ったもの、Si Wei Kuoの脈を通過してください、笑うのは良いことです、尾の束が強い場合、野菜の耳、Chu Han Yu、緑、牛を引きずります、染料秋中、翡翠の夏を鍛え、飛州を訪れ、青銅の縁を吹き、来客を呼び、干ばつを呼び、心を啓発し、脳を突き刺し、チベットを通過します。隙間、炉の殻、硫黄炭を注文し、鋳物と棒を歓迎し、薄い十日間を探索し、幸運を祈り、儀式に耽溺し、残りの雷を鎮め、煙を伸ばしたい、純粋で緩やかな農業、走る、ゆっくりと植える、ルー・チーファンの領域、潮が交差する、Xichi、船が破壊される、嘘を言う、霍哲淮に託す、貢物を切る、強い富を捧げる、儀式、重精錬、罪、祖先が休む、戦車が着られる、品物があった売られ、ネズミが描かれ、龍が飼われ、倉庫が建てられ、兄は汚物を洗い流し、腹を取り込み、女性は悪であり、村は危険を拭き、鐘を賞賛します。ハンドル、竹の谷を議論し、混乱を売り、橋、オバー、垂直道路、額壁に突進し、野生の残骸を切り取り、陰謀を企て、クラスを吊るし、狂気を抑え、そしてザーを助けてください。鍵、福清に戻る、母の周りに集まる、急いで踊る、ロープに遭遇する、古暁陽湖、釘核、壊れたサウンドトラック、ランプを伸ばす、洪水を避ける、死ぬ、勇敢に答える、黄六河傑、甘若街、洪水に襲われる西安島、大砲の注ぐ、情報、精神の卵を理解する子供を閉じて胸を解放する、巨大なプライベートバンカー、イー・ジンタン、疲れた制服の型、ドゥ・レレ、曲線で区切られる、趙シャオ、胡Hutongfeng、Ling Chai Spring Wu、Shang Ding、Qin Shaoに飛び込み、ビームを追いかけ、アルカリを壊し、特別な丘を掘り、ドラマ、heheの胸を描いた事件出版物に掲載されました。魏進の腕と茶色の土地、ジャンズン・ドゥバモ、サンポの裁縫警察が氷とカンボジアの口を摘み、どんな米のプラスチックが郵送されたのか、趙明パッド、カン・ズンムは、服を忘れた庭の舌の肉の兄弟、ミンフイにレイプされました、ダンドゥの耳は剃られ、トラのペンは細く、クンラン・サーのお茶のしずくは浅く、彼女のおまんこはルンニアンの大量の袖ビーズで覆われ、彼女の母親の紫色のオペラタワーは打ちつけられ、彼女は年老いた。彼女の外見はきれいで、彼女は刑務所にいます、そして彼女はいじめっ子を疑っています、沈み、溶け、塩素、不毛の茎、果肉を奪い、忠実で、歌い、錠を捕まえる男たち、そしてあなたは呉志丹を利用します。裏切り者の家畜囚人が錆びに触れてガラスを掃除できるようにします ワインロープ 貧しい池 乾いたバブルバッグ ラングフィード アルミニウム ソフト運河 習慣的な取引 排泄物 反対側のインクへの包括的な傾向は、逆降ろしの開始を妨げます 霧の王冠 Bing Street Lebei。放射線腸フー・ジ参照ルイは驚いて絞り秒数をぶら下げムー腐った森「唐生の凹面陶器の詩チー・カン・イ・ジュ」
$len = mb_strlen($ch_str,"utf-8");//漢字の長さ
$str = array();
for($i=0;$i
$pos = mt_rand(0,$len-5);//開始位置
$str[] = mb_substr($ch_str,$pos,1,"utf-8");
}
$authnum_session = implode("",$str);
$_SESSION['authnum_session'] = $authnum_session //セッションに記録します
;
Header("コンテンツタイプ: 画像/PNG");
//画像の長さと高さ
$image_x=100;
$image_y=50;
$im = imagecreate($image_x,$image_y);
//ここの写真の背景色は白です
$bkg = ImageColorAllocate($im,255,255,255);
// 表示されるフォント スタイル。ファイルを対応するディレクトリに配置する必要があります。ファイルがない場合は、ウィンドウのフォント ファイルを探してください。
$fnt = "simhei.ttf";
//画像に色を割り当てます
$white=ImageColorAllocate($im,234,185,95);
//画像上に楕円弧を描き、下側の座標点を指定します
imagearc($im, 150, 8, 20, 20, 75, 170, $white);
imagearc($im, 180, 7,50, 30, 75, 175, $white);
//画像上に線分を描き、下の座標点を指定します
イメージライン($im,20,20,180,30,$white);
イメージライン($im,20,18,170,50,$white);
イメージライン($im,25,50,80,50,$white);
//ランダムなポイントの数
$noise_num=3000;
$line_num=50;
//紛らわしい様々な文字の色
$rectangle_color=imagecolorallocate($im,0xAA,0xAA,0xAA);
$noise_color=imagecolorallocate($im,0x00,0x00,0x00);
$font_color=imagecolorallocate($im,0x00,0x00,0x00);
for($i=0;$i
{
// 座標点上に単一のピクセルを描画します。この点は上で定義されており、黒です。
//imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);
}
for($i=0;$i
{
$line_color=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
// 2 つの座標点の間に線を描きます。色は上で定義されています
Imageline($im,mt_rand(0,$image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color);
}
($i=0;$i
{
ImageTTFText($im, rand(18,20), rand(0,20), rand(($image_x/4)*$i+$image_x/100,($image_x/4)*$i+$image_x/8), rand($image_y/2+$image_y/10,$image_y/2+$image_y/5), $font_color, $fnt, $str[$i]);
画像PNG($im);
ImageDestroy($im);
?>
注:
漢字認証コードを別途実行してセッションを取得すると、認証コードとセッション内容が一致していないことがわかります。ただし、imgタグのsrc属性で漢字検証コードファイルを参照してセッションを取得すると、両者の内容は一致します。
興味のある友達はこれをさらに改善できます。