0

現時点では、(いつか) 展開して自分のスタートアップ企業に使用する予定の CRUD アプリに取り組んでいます。しかし、私はこの製品を完成させるにはほど遠いところにあり、理解できないように見える質問に出くわしました.

Express を使用して、MySQL データベースから角度のあるデータを提供しています。これを行うには、'/api/' ルートを作成する必要がありました。ただし、(たとえば) '/api/clients' に移動すると、クライアントのリスト全体が醜い配列で表示されます。この場合、とにかく見ることができたデータに過ぎないので、それは実際には問題ではありません.

しかし、私の質問は、この種のルートをユーザーからブロックすることは重要ですか? ユーザーが「api/createClient」にアクセスすると問題が発生しますか? これにより、データベースが破壊される DB インジェクションが発生する可能性はありますか?

私のプロジェクトはここにあります: https://github.com/mickvanhulst/BeheerdersOmgevingSA

  • サーバー側のルーティング コードは、server > Dao > clientDao.js にあります。
  • コントローラー、HTML、およびクライアント側のルーティングは、「public」フォルダーにあります。

私の質問が十分に明確で、誰かが私の質問に答えてくれることを願っています。そうでない場合は、質問が明確でない理由を述べてください。明確にするよう努めます。

ありがとう!

4

1 に答える 1

1

コードを見ると、ブラウザを使用して URL に直接アクセスできるように見えます。アクセスできる場合、これはセキュリティ上の問題を引き起こします。

データベース呼び出しを行う前にこれらのデータが検証およびサニタイズされていない場合、ユーザーが提供したフィールドまたは値を使用して DB トランザクションを実行することは、セキュリティ上の大きな懸念事項です。

内部であるがブラウザを使用してアクセスできる API を作成する前に、従うべき最小限の手順に従うことをお勧めします -

  1. これが内部的なものである場合は、サーバーから HEADER ACCESS CONTROL を提供しないか、ドメイン名のみに限定してください。これにより、別のドメインから API に対して ajax 呼び出しが行われるのを防ぎます。

  2. あらゆる種類のデータベース トランザクションを実行する前に、すべてのデータを完全にサニタイズして検証します。これを行う方法については、いたるところに多くの資料があります。

  3. これらの API が内部目的で使用されることを意図している場合は、ミドルウェアの助けを借りてルートで論理的な作業を行う前に、API に何らかの認証を提供してください。非常に単純な API 認証管理に Cookie 認証を利用できます。より高いレベルのセキュリティが必要な場合は、JSON Web トークンを使用することもできます。

データベースを操作している場合は、API で何らかの認証を使用することを強くお勧めします。もちろん、ポイント 2 は必須です。

于 2015-11-27T10:17:14.297 に答える