5

数学の練習問題を含むサイトを書いています。ユーザーがカンニングしようとしてもあまり気にしないので、Javascript で回答を修正しています

私の特定のケースでは、フォームにフィールドがあります。ユーザーが数式 (3/2 など) を入力できるようにし、その結果を使用して、ユーザーが正しいかどうかを判断できるようにしたいと考えています。そのためには、eval を使用します。

私の JavaScript は、フォームからだけで、URL から直接読み取ることはありません。このページからの結果は、ユーザーに表示するために保存されることはありません (後で統計分析のために結果を保持し、PHP を介してデータベースに保存する可能性がありますが、PHP 自体の入力をサニタイズする必要がある可能性があります)。 、ユーザーが POST を直接使用することを恐れて)

何が問題になる可能性がありますか?=P

4

2 に答える 2

4

スクリプトを壊す可能性のある不正なものが に侵入しないようにする必要がevalあります (これは意図的または意図的でない可能性があります。攻撃ではなく、ユーザーのミスです)。eval の前にフィールドを検証して、それが算術であることを確認します。

ユースケースに関係なく、eval一般的に、どのプログラミング言語でも一般的に悪い習慣と見なされています。確かに、ここには実際のセキュリティ上の懸念はありませんが、クリーンで堅実なコードには価値があります。

Javascript Expression Evaluatorを見て、代わりに使用することをお勧めしますeval

于 2012-08-06T20:19:56.813 に答える
2

何がうまくいかない可能性がありますか?

Javascriptはすべてクライアント側であり、サーバーに何も送信または永続化していないため、実際には何もありません。賢いユーザーは、自分のページを壊したり、スクリプトをボックスに入れてアラートをポップアップさせたりすることで楽しむことができますが、開発者コンソールを介してそれを行うこともできます。すべてがJavascript側にある限り、かなり安全であるはずです。被害が発生した場合は、ページを更新するだけで修正できます。

それにもかかわらず、それについてもっと考えると、副作用を避けるために、少なくとも基本的な手段で入力を検証することは良い考えであり、良い習慣のように思えます。OPは、それが安全であるかどうか、そしてそれが専門的であるかどうかを尋ねましたが、堅実で専門的な感覚のページは、入力が期待される効果のみを確実に持つようにする必要があることを言及する価値があるようです。

于 2012-08-06T20:22:03.333 に答える