getBirthday)の値(value)をシリアライズ(serialize())した文字列を渡します。6行目は、シリアライズされた値がどのようなものかを表示するものです。});});</script>以下がサンプルになります。属性を追加して選択状態にさせています。属性を付与しています。<body><p>生年月日を入力して送信ボタンをクリックすると、年齢を表示します。value="送信">';?></form>//以下のPHPは前述のサンプルと同じです。'日は無効な日付です。間なのでそれ以前の場合は、「日」がうまく調整できません。フォームの検証(バリデーション)セキュリティ対策として、以下の3つを正しく行うことで多くの脆弱性を減らすことができます。外部からの入力データは、入力値が想定される範囲の値であることを厳格に検証します。例としては、ユーザーが年齢を入力する場合、想定される入力値は正の整数で、かつ最大値は130ぐらいです。以下の整数以外はエラーとして処理を継続しないようにします。このように入力値を検証しておけば、攻撃文字列を入力されることを防ぐことができます。検証でエラーとなる場合、システム側で入力値を修正して処理を継続しないことが重要です。エラーとなった場合は、エラー処理としてユーザーにエラーを表示したり、明らかに攻撃だとわかればエラーを記録して即座にプログラムを終了するようにします。どのデータが外部から来たものかを常に意識する必要があります。全て外部からの入力データになります。データベースからのデータでもユーザーからの入力値が含まれる場合は、外部からの入力データになります。入力されたデータをブラウザやデータベース等に出力する場合、必ずエスケープ処理してから出力するようにします。この処理を行わないと、XSS(クロスサイトスクリプティング)の脆弱性が発生するので、必ず行うようにします。多重防御1つの脆弱性対策だけではなく、複数の対策を行うことで、1つの対策が失敗しても別の対策により防御できる可能性が高くなります。攻撃者はブラウザを使わずにサーバーにどんな値でも送信することが可能です。ラジオボタンのようなブラウザで選択できる値が固定されているものでも、攻撃者はそれ以外の値をサーバーに送信することができます。属性を指定していても、攻撃者は制限を越えた文字数のデータをサーバーに送信できてしまいます。アプリケーションの基本になります。よりクライアント側(ブラウザ)で検証していても、必ずサーバー側で検証する必要があります。検証を簡単にすり抜けることが可能だからです。パラメータ改竄(かいざん)パラメータ改竄とは、ブラウザからのリクエストの一部を改竄することです。含まれるデータ、ブラウザ情報、リファラー(参照元)情報などは、悪意のある攻撃者であれば変更することができます。フォームの隠しフィールドの値は変更されることはない。(誤)ラジオボタンやチェックボックスの選択肢の値は変更されることはない。(誤)セレクトメニューで指定した値は変更されることはない。属性で最大文字数を指定すれば、それ以上の文字列は送信されない。含まれるデータは変更されることはない。