フォームの入力値のチェック方法についての質問です。
名前、電話番号、Eメール、住所、注文商品、数量の入力フォームです。
入力値の取得は、ライブラリ「cgi-lib.cgi」を利用しています。
(以下perlのソース)
#!/usr/bin/perl -T
#入力値の取得
require 'cgi-lib.cgi';
&ReadParse(*form);
$name = $form{'name'};
$tel = $form{'tel'};
$email = $form{'email'};
・・・・以下同様の処理が続くだけなので省略
#サブルーチンを利用して入力値をチェック
$name = &Wash($name);
$tel = &Wash($tel);
$email = &Wash($email);
・・・・以下同様の処理が続くだけなので省略
#サブルーチン部分
sub Wash{
if($_[0] =~ /^([^|><\/]+)$/){return $_[0];}
elsif($_[0] eq undef){return "未入力";}
else{return undef;}
}
(perlのソース ここまで)
としてから、通常の処理に入るようにしてみたのですが
セキュリティー上の問題があれば教えてください。
入力値から、コマンドやスクリプトが実行(XSS)されてしまう可能性はありますか?
お願いします。
またメタ文字が見つかった場合の処理についてですが
とりあえずよくわからないので。「undef」を返して
いるのですが、他に良い方法があれば教えてください。
No.1ベストアンサー
- 回答日時:
入力データによるセキュリティホールにはXSSの他にもSQL InjectionやOS Command Injectionなどさまざまあり、これらは「入力データをその後どう扱うか?」に依存しますので一概に「こうすればセキュリティはOK」とはいえないです。
(入力データを表示しない仕様なら、タグが含まれていようがXSSには関係ないわけで)
タグはともかくダブルクォーテーションは?アンパーサンドは?改行は?タブは?ヌルは?
・・・と、危険な文字を特定するのは大変なので、
名前はひらがなのみ許可する。
電話番号は半角数字のみ許可する。(全角数字は半角数字へ変換する)
というチェックにしたほうが効率は良いです。
エラーになったときは「電話番号は半角数字で入力してね」と表示する具合で。
(よくありますよね。住所は数字も含めてすべて全角で入力させるサイト)
入力値の正当性をチェックした後、システム上危険な文字をチェックすることで二重のフィルターをかけるのももちろんありです。
参考URL:http://www.atmarkit.co.jp/fsecurity/special/30xs …
ありがとうございます。
教えていただいたサイトを見て勉強してみます。
入力された項目を確認用画面に表示しているので・・
タグについては、まあ「<」と「>」を半角スペースか何かに置換してやればいいだけなので、まあ問題無いと思うのですが、電話番号は、数字のみ許可するというのは納得です。
ただ名前はひらがなのみ許可するというのは、現実的には難しいでしょうね。
一度入力値から、’(シングルコーテーション)を全て抜き取ってから、もう一度 ’(シングルコーテーション)でサンドイッチした状態にしてから表示するというのも効果はありますか?
勉強しますと言いながら、さらに質問を重ねてしまって
すみません・・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA で指定した範囲に入...
-
数字以外の入力をエラーにする...
-
テキストボックスの番号を使っ...
-
初歩的な事だと思います。 Sub...
-
エクセルVBA テキストボックス...
-
Excel-VBAでInputBox+Pulldown...
-
excel vba でユーザーフォーム...
-
教えて!全角文字「μ」の半角
-
TextBoxから数字が文字...
-
入力フォームの値をQRコードで...
-
VBAでInputBoxの再入力をさせる...
-
Windowsのアプリ開発ってなんの...
-
エディットボックスの入力制限...
-
c#でTextBoxの入力制限
-
入力フォームへ、データを自動...
-
VBAの質問になります メッセー...
-
C♯初心者で、四則演算の電卓を...
-
DataGridView 列ごとの入力制限
-
vbaで同じテキストボックスを繰...
-
「イ分」・・・フンという文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームの値をQRコードで...
-
VBAの質問になります メッセー...
-
c#でTextBoxの入力制限
-
VBAで質問があります
-
教えて!全角文字「μ」の半角
-
VBAでInputBoxの再入力をさせる...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
エディットボックスの入力制限...
-
accessで該当するレコードがな...
-
DataGridViewの桁数制限に関して
-
VBA R1C1形式で変数の入力について
-
「イ分」・・・フンという文字...
-
Windowsのアプリ開発ってなんの...
おすすめ情報