0

重複の可能性:
SQLインジェクションを防ぐ方法は?

これは、好奇心から、私が決定しようとしている哲学的なポイントです。

理論的には、パスワードや暗号化は解読可能であることを私は知っています。

しかし、それはSQLインジェクションでも同じであり、サイトに実装されているセキュリティ対策を処理/バイパスするための適切な対策を見つける必要がありますか?それとも、インジェクションは、固定された一連のセキュリティ対策を使用することに対して確実かつ確実に防御できるものですか?

私のサイトの入力フィールドにインジェクションによってハッキングできない可能性があるのか​​、それとも常に何らかの脆弱性があるのか​​、本質的に疑問に思っていますか?

4

3 に答える 3

2

SQLインジェクションに対して脆弱であることはバグです。適切に構築されたアプリケーションにはそのようなバグは含まれず、そのようなバグが発生することはありません。

于 2012-12-08T03:05:16.170 に答える
1

SQLインジェクションは、入力されたデータが有効なSQLに準拠していることを意味します(ただし、通常、望ましくない結果を生成するために創造的な方法でインジェクションされます)。

それから保護するには、ユーザーが提供したデータが悪用されないようにエンコードされていることを確認する必要があります。

上記のリンク(PHPでSQLインジェクションを防ぐにはどうすればよいですか?)で述べたように、プリペアドステートメントを使用することはSQLインジェクションから保護するためのベストプラクティスです。

于 2012-12-08T03:13:21.577 に答える
0

SQLインジェクションは、Webサイトのセキュリティを乗っ取るために使用される手法です。

SQLインジェクションは、入力フィールドで指定されたデータがエスケープ文字でフィルタリングされず、実行のためにSQLクエリに渡されない場合に発生します。

SQLインジェクションのテストについては、次のURLを参照してください。 http://sqlzoo.net/hack/

上記のURLで、名前のフィールドに「 ' 」を指定し、パスワードのフィールドに「 OR 1 = 1# 」を指定してみてください

したがって、結果のクエリは次のようになります

      SELECT * from user where name='' OR 1=1#' and password='';

上記の例では、入力フィールドに上記のデータを指定するとクエリが壊れ、匿名ユーザーであれば誰でも簡単にWebサイトにログインできることがわかります。

SQLインジェクションを防ぐためのいくつかのテクニックがあります。

(1)入力データは、実行のためにsqlクエリに渡されるときにmysql_real_escape_stringを使用してフィルタリングする必要があります。

mysql_real_escape_string関数の詳細については、以下のURLに記載されているドキュメントを参照してください。 http://php.net/manual/en/function.mysql-real-escape-string.php

于 2012-12-08T03:36:20.923 に答える