0

次のテーブルがあるとしましょう:
1。commentsc_id、、 2 。:a_id、、body
articlesa_idtitlebody

コメントシステムがあります(SOに似ています)。しかし、当然のことながら、投稿された記事のIDを提供する必要があり、それを行うには多くの方法があります。

そこで、次のように、記事のIDを使用して非表示の入力を作成するという単純な方法を使用しました。
<input type="hidden" name="article_id" value="1" />
次に、サーバー側にPOSTします。MySQLを使用してテーブルに挿入されます。しかし、悪いユーザーが非表示の入力のデータを変更することは可能ではありませんか?

たとえば、彼が非表示の入力を変更して無効なIDを入力した場合、または存在しない記事や私が本当に必要としないものを入力した場合です。それは私が考慮すべきことですか?発生するのは無効なコメントだけなので、それ以上はありません。私はintvalすべての整数入力を取得しているので、どのタイプのSQLインジェクションも恐れていません。

結論:無効なコメントを本当に気にし、記事が最初に存在するかどうかを確認する追加のクエリを発行する必要があります。これにより、無効な無害なコメントが挿入されないようにするために、より多くのリソースが必要になります。

4

2 に答える 2

1

ユーザーが不良/無効なデータを挿入していないことを常に確認する必要があります。

クライアントを絶対に信用しないでください。隠し値の変更は非常に簡単です

これで、データベースに外部キー制約があり、これから部分的に保護されます。ただし、記事IDが有効なものに変更されたが、保護したい(記事がロックされている)アクセス権がない場合は、それ

于 2012-07-21T02:46:20.363 に答える
1

ユーザーがデータを変更できることは100%正しいです。要するに、クライアント側のすべてのものは、クライアントによって変更される可能性があります(良いか悪いか)。

使用方法に関係なく、クライアントからのIDを確実に検証します。適切な外部キー関係が設定されている場合、データベースへの無効なIDの挿入は技術的に失敗するはずですが、そうでないと仮定すると、データベースが無効なデータでいっぱいになる可能性があります。

さらに、送信されたすべての「無効な」IDと、それらを送信したユーザーを追跡する場合、(将来的に)ユーザーによるコメントの投稿をブロック/禁止できるロジックを実装できます。

于 2012-07-21T02:50:19.743 に答える