攻撃者の可能性を減らすために、テーブル内に英数字の値のみを含めることは価値がありますか?たとえば、登録フォームでのユーザー名とパスワードの入力については、次のように適用します。
preg_replace("/[^A-Za-z0-9 ]/", '', $input);
そしてもちろん、ログインする前に毎回同じことを実行しますか?
攻撃者の可能性を減らすために、テーブル内に英数字の値のみを含めることは価値がありますか?たとえば、登録フォームでのユーザー名とパスワードの入力については、次のように適用します。
preg_replace("/[^A-Za-z0-9 ]/", '', $input);
そしてもちろん、ログインする前に毎回同じことを実行しますか?
文字を削除すると、実際にはセキュリティが弱まります。
どんな文字でも削除しても意味がありませんが、セキュリティを強化するためにパスワードに非アラナム文字が必要です。
「違法な」文字のトピックに関する他の回答を参照してください:https ://stackoverflow.com/a/2995163/285587
PHPのプリペアドステートメントなどの他の手段を使用して、SQLインジェクションの可能性を防ぐことができます。ただし、任意のユーザー入力が表示のためにサーバーに戻されないようにする必要もあります。そうしないと、スクリプトインジェクションが発生する可能性があります。システムを最初から設計する場合は後者を回避できますが、かなり前に注意せずに作成されたものにパッチを適用するのは難しい場合があります。
したがって、ユーザーが指定したデータベース文字列がブラウザに戻る可能性がある場合は、JavaScriptの挿入を防ぐために、フィルタリングを使用することが理にかなっている場合があります。