- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perl フォームの入力値のチェック セキュリティ)
perlフォーム入力値のチェック方法とセキュリティについて
このQ&Aのポイント
- フォームの入力値のチェック方法について質問です。名前、電話番号、Eメール、住所、注文商品、数量の入力フォームがあり、入力値の取得はライブラリ「cgi-lib.cgi」を利用しています。セキュリティ上の問題やXSSの可能性について教えてください。
- 入力値をチェックするためのサブルーチンを利用しています。メタ文字の処理について、「undef」を返していますが、他に良い方法があれば教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
入力データによるセキュリティホールにはXSSの他にもSQL InjectionやOS Command Injectionなどさまざまあり、これらは「入力データをその後どう扱うか?」に依存しますので一概に「こうすればセキュリティはOK」とはいえないです。 (入力データを表示しない仕様なら、タグが含まれていようがXSSには関係ないわけで) タグはともかくダブルクォーテーションは?アンパーサンドは?改行は?タブは?ヌルは? ・・・と、危険な文字を特定するのは大変なので、 名前はひらがなのみ許可する。 電話番号は半角数字のみ許可する。(全角数字は半角数字へ変換する) というチェックにしたほうが効率は良いです。 エラーになったときは「電話番号は半角数字で入力してね」と表示する具合で。 (よくありますよね。住所は数字も含めてすべて全角で入力させるサイト) 入力値の正当性をチェックした後、システム上危険な文字をチェックすることで二重のフィルターをかけるのももちろんありです。
お礼
ありがとうございます。 教えていただいたサイトを見て勉強してみます。 入力された項目を確認用画面に表示しているので・・ タグについては、まあ「<」と「>」を半角スペースか何かに置換してやればいいだけなので、まあ問題無いと思うのですが、電話番号は、数字のみ許可するというのは納得です。 ただ名前はひらがなのみ許可するというのは、現実的には難しいでしょうね。 一度入力値から、’(シングルコーテーション)を全て抜き取ってから、もう一度 ’(シングルコーテーション)でサンドイッチした状態にしてから表示するというのも効果はありますか? 勉強しますと言いながら、さらに質問を重ねてしまって すみません・・・・・