- ベストアンサー
inputタグに入力された数値を安全にするには?
- inputタグに入力された数値や数式を安全に処理する方法を教えてください。
- 悪意のあるコードを防ぐために、入力情報をチェックする仕組みを実装する必要があります。
- ウイルスなどの被害を防ぐためには、信頼できる入力情報のみを正しく処理する必要があります。
- みんなの回答 (34)
- 専門家の回答
質問者が選んだベストアンサー
>回答No.32 amanojaku1 訂正です、括弧に対応していませんでした。 正規表現は下記の方が適切です。 超簡易式の処理です、要点は(式として成立しているかではなく)コマンドが実行されないようになっているか?、が重要です。 (断定はできませんが)これならJavaScriptのマクロのような構文も実行できないと思われます。 JavaScriptのマクロのような構文については分かりませんので、別の質問にしてみたら どうでしょうか? 「四則演算子、数字、括弧」以外は削除されます。<br> また式として成立しない文字列は計算できません。<br> <input type="text" name="gakunen" value="" onKeyPress="Calculator(this.value, event.keyCode)"> <script type="text/javascript"> <!-- function Calculator(a, kcode){ var r; if (!(13==kcode)){return;} // ↑「13:Enterキー」でない場合は「return」 r = a; r = r.replace(/[ ]*([\-\/\*\+])[ \-\/\*\+]*/g, '$1'); r = r.replace(/^([ ]*[\/\*\+][ \-\/\*\+]*)/g, ''); r = r.replace(/([^0-9\.\-\/\*\+\(\) ]+)/g, ' '); r = r.replace(/([ ]+)/g, ' '); try{ alert(r+' = '+eval(r)); }catch(ex){ alert(ex.message+' : '+r); } } // --> </script>
その他の回答 (33)
- amanojaku1
- ベストアンサー率54% (265/488)
>回答No.2 amanojaku1 >入力されたものをどうすると安全になるのでしょうか? 敵の目的はウイルスに感染させる事なので、入力の値が改ざんされる訳ではありません。 >自分のサイトにウイルスが仕込まれていたり、する可能性が既に0ではないのですか? 基本的にメジャーなサイトが標的にされますね。 マイナーなサイトのページにマルウェア(悪意のあるコード)が仕込まれたと言う話は聞いた事はありませんが、無いとも言い切れないかもしれません。
- amanojaku1
- ベストアンサー率54% (265/488)
マルウェア(悪意のあるコード)がページに仕込まれたら、(ブラウザなどにセキュリティホールが在れば)そのページをブラウザが読み込んだ瞬間に感染するので、inputタグの入力が どうとか言うレベルの話ではありません。 なのでPCにアンチウイルス・ソフトを入れるのは常識です。
- t_ohta
- ベストアンサー率38% (5294/13830)
> 具体的に入力されたものをどうすると安全になるのでしょうか? まず、何を入力させるのか仕様を決め、その仕様に沿った入力内容か確認を行った上で処理を実行します。 例示されているURLにあるように、一般的には正規表現という手法を用いて入力値が仕様に沿ったモノか判定し、仕様に合わない場合はエラーメッセージを表示するなどして処理を中断します。 「ポイント」と言う所の「// 正規表現チェック」でやっているように、正規表現で入力値を評価し、正規表現に合う入力値なら結果が TRUE になるので処理を続行、結果が FALSE なら想定している入力値に合わない内容なので処理を中断すると言った事を行います。 あとは、こう言ったモノも参考にして下さい。 https://www.ipa.go.jp/security/vuln/websecurity.html