• 締切済み

Perlで入力項目の英数字を全て拒否する。

タイトルのとおりなのですが、 テキストボックスに英数字を 入力するとエラーが出るプログラムを考えています。 その他記号「" ' < >」は変換すれば、 問題ありませんが、今回作成するプログラムは、 SQLの日本語完全一致のみの検索なので英数字は全て排除したい と考えています。 ご教授お願いします。

  • Perl
  • 回答数3
  • ありがとう数1

みんなの回答

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.3

補足の項に「今回の英数字(小文字含む)の入力を拒否するという趣旨は、 「あらゆるコマンド入力を阻止する。」点にあります。」 とありますが、若しかしてSQLインジェクションを防止したい、との意図 ですか? 入力の文字列を心配するあたりからすると、入力の文字列を使ってSQL文を 組み立てようとしていませんか? プレースホルダを使えばSQLインジェクションを簡単に防止することが できます。DBIならプレースホルダをサポートしています。 プレースホルダを知らないのでしたら、SQLインジェクションと共に 「プレースホルダ」や「バインドパラメータ」などでネット検索してみて 下さい。

lawyer1212
質問者

お礼

検索しましたが、有効なページ(トップから3ページ) はありませんでした。SQLインジェクションとともに 検索するとこのページがトップのほうに…。

lawyer1212
質問者

補足

ご回答ありがとうございます。 もちろん、SQLインジェクションも阻止するつもりです。 タグ打ちやその他、Perl、SSLコマンドの阻止するためでもあります。 現在は if ($name =~ /{a-zA-Z}/}{ print "エラーが発生しました。"\n; } else{ といったふうな処理にして記号は変換して対応しようかと 考えています。 「プレースホルダ」や「バインドパラメータ」などネット検索して みます。

noname#39970
noname#39970
回答No.2

不正ではない場合だけSQLを投げれば希望通りなのでは?

lawyer1212
質問者

補足

おっしゃっている意味が理解できました。 (Perl)で不正かどうか返して、SQLを実行するということですよね? 主語が省略されていてちょっとわかりずらいのですが…。

noname#39970
noname#39970
回答No.1

正規表現で文字列検索(英数字) 戻ってきた文字列が有る場合=不正 という流れで組むとか

lawyer1212
質問者

補足

ご回答ありがとうござます。 今回の英数字(小文字含む)の入力を拒否するという趣旨は、 「あらゆるコマンド入力を阻止する。」点にあります。 ですから、SQLのコマンドの実行前にエラーを出したいと 考えています。

関連するQ&A

  • Perlで半角英数字以外の入力を拒否するには

    全く想像がつかないので、ご回答お願いいたします。 現在Perlで簡単なプログラムを作成しているのですが、全角で何かを入力するとプログラムがフリーズしてしまいます。これを防ぐために、半角の英数字以外の入力をシャットアウトしたいのですが、その判定をするにはどういうプログラムを入れればよいでしょうか。 データはPOSTで送っており、運用上、全角文字だけでなく、できれば半角カナも排除したいのですが……。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • PS3 キーボード 「かな入力」 からの英数字入力

    PS3にキーボードを接続し、周辺機器設定での入力方式を「かな入力」にして使用しています。 かな入力による漢字変換等は問題なくできているのですが、日本語変換モードのままで 全角の「ABC、!?」などの英数字や記号の入力方法が分かりません。 仕方なく、「半角/全角 漢字」キーを押し日本語変換モードを抜け、半角の英数字を打っています。 通常、PCでは「Caps Lock 英数」キーで変換モードのまま英字入力可能ですが、PS3では英数入力となりません。 操作方法をご存知の方おられましたら、よろしくお願い致します。

  • ATOKで英数字入力

    IMEから、ATOKに変更しました。 IMEの時は、「この部分は英数字」と特に意識せず、日本語と英数字部分を混ぜて打っても、あとから変換候補で英数字(全角、半角、大文字、小文字の候補がすべて)出てきて、自由に変えることが出来ました。 ところが、ATOKにすると、変換候補に英数字が出ないため、最初から入力文字種を切り替えておくか、入力後ファンクションキーで変換してやらねばなりません。 半角はF10キーでも大丈夫なのですが、F8キー(全角)は別のコマンドを覚えさせているため、変換がうまくできません。 最初の設定で、入力候補にIMEのような英数字を入れることができるのでしょうか。 初歩的な質問ですがよろしくお願いいたします。

  • テキストボックスへの入力に対してのテスト項目について質問させて下さい。

    テキストボックスへの入力に対してのテスト項目について質問させて下さい。 Webアプリケーションでテキストボックスに入力されたワードを元に DBへ接続後に検索するSqlを発行し、結果を表示するプログラムを作成したのですが その検索処理に対して、テストを行い問題を洗い出したいと考えています。 色々と調べてみた結果、入力されるデータへの ・境界値チェック(今回の場合はsqlに対する入力文字数と思っています) ・禁則文字チェック くらいしか思いつかなかったのですが その他、これはチェックするべき・した方が良いといのがあれば ぜひ教えて頂けると嬉しいです。 個人的に作成していますので、実際の業務では どれくらい詰めてチェックしているのかも興味あります。

    • ベストアンサー
    • Java
  • Access97のテキストボックスプロパティの入力規制について

    質問はAccessのテキストボックスに パスワードを入力する機能についてです。 パスワードは6桁の半角英数字のみ入力可能にしたいです。 現在、以下のことを試し、 半角英数字が6桁入力できるようになりました。 テキストボックスのプロパティで 定型入力部分に「password」と設定しテキストボックスに パスワードが「****」で表示できるようにしました。 そして6桁にしたいので、 入力規制の部分に「like "??????"」と設定しました。 問題は半角英数字は入力できるのですが、 スペースや記号も入力できてしまうことです。 スペースや記号は入力できないように設定することは可能でしょうか? また入力規制の部分で、半角英文字、半角数字を設定することは 可能でしょうか? 何か解決法がありましたら、教えてください。 よろしくお願いします。

  • IME2003の「かな入力」で漢字変換後、勝手に全角英数字モードになってしまいます。

    どうやらIE7をインストールしてから発生しているようなのですが、 (これまで使っていたIE6では、このようなことはありませんでした) ブラウザ上で日本語入力をしていて漢字変換を行った直後に 入力モードが意図せず全角英数字に切り替わってしまい困っています。 整理すると、 ・使用している日本語入力システムは「IME2003スタンダード」 ・日本語の入力設定(プロパティ)は「かな入力」(ローマ字入力じゃないやつ) ・ブラウザ上(IE7)でGoogle検索テキストボックス(ツールバー)へ日本語を入力する時、  表示されたページでフォーム等のテキストボックスへ入力日本語を入力する時に起こる。  メモ帳やWord、Excel上では起こらない。 ・入力し始めから漢字変換を完了するまでは正常に動作する。 ・漢字変換の際(スペースキー)、1回で目的の漢字が出て確定させた場合は、全角英数字に切り替わらない。 ・漢字変換の際(スペースキー)、目的の漢字が出るまでスペースキーを  2回以上押した場合、その直後から入力モードが全角英数字に切り替わる。 こんな感じで、漢字変換後、引き続きひらがなが出てくると思ってキーをたたいていると、 全角英数字がズラズラと並んでいて???となり、 Escキーで解除。    ↓ 無変換キーを3回押して(全角カタカナ→半角カタカナ→ひらがな)入力モードをひらがなに変える(戻す)。 これをいちいちやらねばならず煩わされています。 同様の症状で悩んでいる方、解決方法をご存知の方いらっしゃいませんか? ついでですが、一度インストールしたIE7を IE6にダウングレードすることって出来るのでしょうか? 下記はご参考まで 使用機種:ThinkPad X60 OS:WindowsXP SP3 IEのバージョン:7.0.5730.13 / 更新バージョン:0 Office2003を「すべてマイコンピューターから実行」でインストール済み 2008/8/17 3:36現在、Microsoft Updateを実行すると、 「お使いのコンピュータに該当する優先度の高い更新プログラムは存在しません。」 ってことなので、未解決、未認識のIE7のバグかなぁ、と思っています。 ↓お仲間らしいBlog?記事 http://www.geocities.jp/keisetsu2003/personal/bangai/bg0060.htm

  • VBでローマ字入力とかな入力を使い分けたい時どうすれば??

    VisualBasic6.0を使って、 フォームの上にテキストボックスをふたつ 作ったプロジェクトを新規で作成します。 今、IMEの文字入力方式はローマ字方式を 使っているとします。今半角カナ入力状態に なっているとします。 その状態で、そのテキストボックスの上で Aを3回押すと半角カナでアアアとでます。 テキストボックス上で ALT + ひらがな を押して、かな入力に切り替えます。 そのテキストボックス上でAを3回押すと 半角英数字でaaaと出ます。 もうひとつのテキストボックスをクリックして そっちに移動してから、もとのテキストボックスに 移動します。 そこで、Aを3回押すと半角カナでチチチと出ます。 こういう手順を踏まないとひとつのテキストボックス上 でかな入力とローマ字入力を変えることができないですが 何か方法はないのでしょうか?それともこれは昔から どうしようもないことなのでしょうか? それは、この教えてGOOの質問のタイトルと 質問の内容のテキストボックスでも同じ事が 言えると思います。 普段はローマ字入力で、ある半角カナで入力したい テキストボックスにきた時だけ、何かをして かな入力に変更したいのですが、どうすればよいでしょう? 今、フォームを全画面表示していて IMEツールバーはタスクバーにしまったままにしてお きたいので、IMEツールバー上から変更するという 方法は使えないです。 どなたか親切な方回答お願いしますっ・・・。 また、ちなみにプログラム上から変えることって できるのでしょうか?やるつもりはないですが 一応聞いてみたいです。

  • 英数字用フォントでギリシア文字を入力する方法

    ワードでは,日本語で入力した後フォントを変換すればギリシア文字を英数字用フォントで入力することができます。またアクセント付の文字もCtrlキーを組み合わせればうつことができます。しかし,他のアプリケーション(例えばパワーポイント)で,そういった特殊文字を英数字用フォントで入力するにはどうしたらいいのでしょうか?

  • 入力された全角英数字だけを見つけて半角に

    掲示板の本文に打ち込まれた【全角】ローマ字&数字を 自動で【半角】化してくれるようなスクリプトを探しています。 本文テキストフィールドのonBlur時に使えたらと思っています。 本文なので、英数字だけでなく日本語(全角)も入ります。 ただ、英単語もしばしば使われるので、過去ログの検索効率のため、 英数字は全てを半角で統一できたらと思いまして...。 テキストフィールドに入力された本文から 全角のローマ字&数字だけを見つけ出し、それだけ半角化する、 こんなワガママを可能にしてくれるスクリプトや参考になる サイトさんがどこかにありませんでしょうか?

  • wordのテキストボックスの文字入力について

    word2003,2007でも同じですが、テキストボックスフィールドを使用してテンプレートを作っていますが、キーボードタイピングにより入力した時のフォントの大きさが異なります。 入力時に全角入力で入力しf10を押して半角変換したフォントの大きさと、半角入力のまま入力したフォントの大きさが異なります。 なぜでしょうか? フォントの日本語、英数字用のフォントは同じにしています。

専門家に質問してみよう