「セキュリティを強化しすぎていませんか?」という問題に直面しています。または「セキュリティが低すぎますか?」
まず、「メッセージの投稿」機能と「メッセージの編集」機能を実装する必要があります。
基本的なテーブル構造は次のとおりです。
id, user_id, category_id, message_title, message_content
これらの 2 つの方法は非常に簡単に実装できるように思えますが、セキュリティやハッカーのことを考えると心配になります... ここで私が心配することがあります。
メッセージの投稿について:
- ユーザーはデータベースに非常に長いメッセージを送信しますか?
- ユーザーはデータベースを破壊するために SQL インジェクションを行いますか?
- ユーザーはメッセージを投稿し続け、データベースがいっぱいになりますか?
- ユーザーは無効な を送信します
category_id
か? (たとえば、削除されたか、まだ表示されていないか、このユーザーはそのカテゴリを使用できません)
メッセージの編集について:
- ユーザーは自分のものではないメッセージを編集しますか? (ハック
id
)- ユーザーは無効なメッセージを編集します
id
か? (たとえば、削除された、またはまだ表示されていない)- ユーザーはデータベース内の SQL インジェクション ステートメントを編集しますか?
- ユーザーはデータベース内の長いメッセージを編集しますか?
- ユーザーは無効な を編集します
category_id
か? (たとえば、削除されたか、まだ表示されていないか、このユーザーはそのカテゴリを使用できません)
気になる質問がいくつかあります。次の 2 つのタイプに分類できます。
- 技術的なセキュリティの問題。(例: SQL インジェクション、メッセージ長)
- プログラムロジックの問題。(たとえば、
category_id
そのユーザーには許可されていません)
技術的なセキュリティの問題は、インターネット上の標準ライブラリを使用して実装できると思いますが、プログラム ロジックの問題に頭がおかしくなりました。すべてのチェックを実装する必要がありますか? たとえば、関連する SQL コマンドを実行する前に、それが存在するcategory_id
ことuser
を確認し、存在することを確認します。id
実装できますが、非常に時間がかかります。それとも、すべての入力が有効であり、ユーザーがシステム内で奇妙なことをハッキングしないと想定する必要がありcategory_id
ますか? お知らせ下さい。