1

ハッキングチャレンジで、私は次のようなものを見つけました:

<input type="hidden" value="1500" name="price">

値を変更するのに十分賢い場合(Webアプリケーションのクライアント側によって課せられます)。アイテムの価格を変更できます。私は疑問に思っていました..どうすればそのコード行をより安全にすることができますか?まずはサーバー側で価格を設定する必要があると思います。このような問題に対処する方法についての提案は大歓迎です。どうもありがとうございました。

4

3 に答える 3

0

クライアント側に含めないでください。そもそもユーザーに表示する以外に、価格をクライアント側にする必要があるのはなぜですか? (実際には、クライアントで価格を利用できるようにしても害はありません... 顧客に価格を見てもらいたいと思いますが、価格が正確であり、改ざんされていないことを実際に信頼するのはばかげています。

注文のアイテムを処理するときは、クライアントからの価格を受け入れるのではなく、ItemId に基づいて価格を検索する必要があります。クライアント側のデータは自動的に信頼できないと見なされるため、検証する必要があります。文脈上、これがアイテムであり、「カートに追加」オプションをクリックしていると仮定すると、非表示フィールドの値が適切な価格であると受け入れるのは愚かなことです. この場合、検証とは、10 進数であることを確認するだけでなく、実際の価格を確認することを意味します。

代わりに、アイテムには ID が必要であり、サーバー側での呼び出しはその ID を使用して Products テーブルの価格を検索し、Products テーブルから取得した検証済みの価格を使用します。

価格を暗号化したとしても、改ざんされていると想定する必要があります。これは、初期設計段階でセキュリティと常識を実装する必要がある明白なケースの 1 つです。だとしたら、そもそもコード化されない。


とはいえ、注文プロセスとは関係のない正当なビジネス上の理由があるかもしれません. おそらく、開発チームは隠しフィールドを介して公開したいと考えています。価格をJavaScriptなどで読み取れるようにしたい場合は、価格を利用できるようにするのが理にかなっています...たとえば、数量が変更されたときに価格を調整するクライアント側の機能の場合などです。そのようにするかどうかはわかりませんが、そのシナリオでは害はありません。

于 2013-01-08T17:20:05.753 に答える
0

通常、Web ページに価格を表示して、ユーザーがいくら払っているかを知ることができますが、価格の最終的な決定はサーバー上の価格のデータベースから行われます。

価格の変更が頻繁に行われている場合は、ユーザーが価格を表示してからクリックして購入するまでの間に価格が変更された場合にユーザーに通知されるようにすることができます。

決定的な価格が Web ページに含まれている場合、それは人々に独自の価格を設定するように勧めているだけです。それを行う場合は、宣伝して、そのような機能が意味する追加のビジネスを獲得することもできます.

あなたがハッカーである場合は、白い帽子をかぶって、サイトの所有者にメールを送信して、問題があることを知らせることをお勧めします.

于 2013-01-08T17:21:54.723 に答える
0

価格が負の数に設定されているこのハックのバージョンを見たことがあります。カートが合計されると、ハッカーは無料のものを手に入れることができます.

たとえば、ページでテレビの価格を -5,000 ポンドに設定できる場合、たとえば 5,001 ポンドの商品をカートに追加して、サイトに 1 ポンドだけ支払うことができます。

問題の解決にはなりませんが、ここにある他の投稿で述べたように、Web ページからの価格を信用するべきではありません。価格を計算するときは、製品データベースから値を取得する必要があります。うまくいけば、そこに価格が -£5,000 の製品はありません...

于 2013-01-08T17:29:14.367 に答える