-1

PHPページがあり、アドレスバーに次のように表示されます。

http://blabla/ClientStats.php?client=blabla

$ _GET ['CLIENT']変数は、次のようにSQLクエリ内でアクセスするまで正常に使用していました。

<?php
$query = "SELECT ... ... ... FROM ... ... ... WHERE Client = '" + $_GET['CLIENT'] + "'";
?>

クエリはそれよりもはるかに複雑ですが、その「WHERE」ステートメントは機能しますか?

私はこれをかなりの数の異なる方法で機能させようとしましたが、成功しませんでした。今日、明日機能させる方法を見つけることができれば、それは素晴らしいことです(上記のように試したかどうかさえ思い出せません! )。

それで、それはうまくいくでしょうか、そうでなければ、私はそれをどのようにすべきですか?

4

4 に答える 4

2

SQLクエリ内でチェックされていないユーザー入力を使用しているため、これはお勧めできません。これにより、セキュリティホールが発生します。

于 2012-10-28T11:54:32.717 に答える
2

追加 '。' 「+」の代わりに。そのはず

$query = "SELECT ... ... ... FROM ... ... ... WHERE Client = '" . $_GET['CLIENT'] . "'";

ただし、その前に、SQL インジェクションに対して脆弱であるため、コードを確認してください。

于 2012-10-28T11:58:38.267 に答える
1

元の質問に答えると、はい、それは機能しますが、アプリケーションに大きなセキュリティの脆弱性を開くため、かなり眉をひそめられると思います.

私がしていることは、値を変数に保存してから、入力をサナタイズすることです:

例:

$client = mysql_real_escape_string($_GET['CLIENT']);
于 2012-10-28T11:57:19.263 に答える
0

*_real_escape_string を使用してエスケープする必要があります。そうしないと、クエリが SQL インジェクション攻撃を受ける可能性があるため、このように使用します

$client = mysql_real_escape_string($_GET['CLIENT']);//if using mysql

<?php
$query = "SELECT ... ... ... FROM ... ... ... WHERE Client = '".$client. "'";
?>
于 2012-10-28T11:59:03.040 に答える