sql >> データベース >  >> RDS >> Mysql

グッドプラクティスとセキュリティを照会するPHP/SQLデータベース

    owaspリンクを持つハビエルの答えは良いスタートです。

    さらにできることがいくつかあります:

    1. SQLインジェクション攻撃に関しては、次のように、「DROP」や「DELETE*WHERE」などの一般的なSQLステートメントを入力から削除する関数を記述できます。

      * $ sqlarray =array( "DROP"、 "or 1 =1"、 "union select"、 "SELECT * FROM"、 "select host"、 "create table"、 "FROM users"、 "users WHERE"); *

      次に、この配列に対して入力をチェックする関数を記述します。 $sqlarray内のものがユーザーからの一般的な入力にならないようにしてください。 (これにはstrtolowerを使用することを忘れないでください。ありがとうございます。)

    2. memcacheがPHP4で機能するかどうかはわかりませんが、プロセス.phpページへの特定のリモートIPアクセスをY期間にX回だけ許可することで、memcacheを使用してスパム保護を導入できます。

    3. 特権は重要です。挿入権限(注文処理など)のみが必要な場合は、注文処理ページで、挿入権限と選択権限のみを持つユーザーを使用してデータベースにログインする必要があります。これは、SQLインジェクションが成功した場合でも、INSERT / SELECTクエリのみを実行でき、削除や再構築は実行できないことを意味します。

    4. 重要なphp処理ファイルを/includeなどのディレクトリに配置します。次に、その/includeディレクトリへのすべてのIPアクセスを禁止します。

    5. ソルトされたMD5をユーザーのエージェント+remoteip+ソルトとともにユーザーのセッションに配置し、ページが読み込まれるたびに、正しいMD5がCookieに含まれていることを確認します。

    6. 特定のヘッダーを禁止します( http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST )。 PUT(ファイルのアップロードが必要ない場合)/ TRACE / CONNECT/DELETEヘッダーを禁止します。



    1. node-mysqlを使用してMySQL接続を閉じるのはいつですか?

    2. 生年月日とgetDate()に基づいて年齢(年)を計算する方法

    3. SQLServerのローカルおよびグローバル一時テーブル

    4. PostgreSQLでdatabase_nameコマンドを使用する