2016-10-07 1 views
0

セキュリティに関する質問があります。私はそう私はdivにデータがある場合、誰かがサーバーに送信したデータを変更することができます

<div id="Q9vX" class="mainContent" data-compname="comp1" data-user="57f70c8e78ae49d41c78876a" data-shortid="Hy85nKVR"> 

のようにdivの中のデータを持っていると私はそれが送信された前に誰かがdata-user属性値を変更.Couldn't compnameとユーザーIDを送信したPOSTリクエストを行う言うことができますか?私はdivのIDに基づいてDB操作を行っているので、誰かがidを変更して、悪人が入力したidと私が当初意図したidではない操作が発生する可能性があります。 。私はmongodb、heroku、expressを使用します。私は期限が切れるのでセッションを恐れていますし、私はあまりにも快適ではありません。このようなことに対する標準的な手順は何ですか?

たとえば、このdivは、IDが57f70c8e78ae49d41c78876aのユーザーが配置したレビュー用です。したがって、すべてが正常になり、ユーザーが送信を押すと、レビューはそのユーザーのIDに割り当てられます。誰かが火かき棒に入ることを決心し、この新しいIDにレビューが登録されるとIDを変更すると言うことができますか?

+0

はい、送信時にDOMからデータを取得する場合。 DOMは、ほぼすべての主要なブラウザに組み込まれた開発ツールを使用して編集できます。重要な情報を保存する場合は、JavaScript、セッションクッキー、またはその他の編集不可能なメモリで行います。 – AppleCrazy

答えて

1

この値は、開発ツールまたは悪意のあるコードがページに挿入されたcross site scripting攻撃を介してユーザーに変更される可能性があります。これは、サーバー上のファイルにコードを追加したり、CMSを使用する場合はデータベースにコードを追加したり、ブラウザ拡張などの別の方法でコードを追加するなど、さまざまな方法で行うことができます。

サーバー側のアクセス制御がない場合、データの可用性や完全性を損なうスクリプトを書く可能性があります。可用性は、数千の偽の要求がサーバに送信されて、正当なユーザが接続できないように、同時データベース接続の数を超過しようとするDoS(サービス拒否)攻撃によって損なわれる可能性があります。多くの偽のリクエストをデータベースに送信することで、データの整合性が損なわれる可能性があります。これは、識別して削除するのが困難で時間がかかることがあります。また、レビューがユーザーがサイトに表示されているデータを入力できるコメントボックスのようなものであれば、悪意のあるクロスサイトスクリプティングコードを挿入するために使用できます。

セキュリティが懸念される場合は、セッションなどのアクセス制御を実装し、データベースのデータの送受信やWebサーバー上の安全なHTTP接続の使用を推奨します。

Express JSのWebサイトには、security best practicesに関する記事があります。

関連する問題