PHPを使用してmysqliでデータベースに接続しています。クエリは Java コードで作成され、JSON を使用して PHP スクリプトに送信されます。
コードで作成された動的なクエリが 1 つあるため、準備済みステートメントを使用できません。
たとえば、私は一度に持っています: SELECT x FROM y WHERE z = ? AND o =?
. そして他の時には:SELECT x FROM y WHERE z = ? AND o =? and k = ? and j =?
それはユーザーの選択によるものであり、どのクエリになるかわかりません。
私の問題は、SQL インジェクションにさらされていることです。
データベースを SQL インジェクションから保護するための 1 つのステップを考えました。PHP スクリプトに秘密鍵を送信することを考えましたが、鍵が適切な場合にのみ SQL アクションが実行されます。
例えば:
if($key == "2fdgfg1sdjsdgj2JDSJDFSG2394KSDJG")
{
// do SQL
}
これが私のコードで使用するものです。ユーザーは、自分の DB から見たい車種を選択できます。
Android アプリケーションには、必要な車を選択できるダイアログがあります。次に、Java コードでこのコードを使用します。
int length = usersChecked.length;
String sqlQuery = "";
for (int i = 0; i < length; i++) {
if (usersChecked[i]) {
if (sqlQuery.equals(""))
sqlQuery = " = " + list[i];
else
sqlQuery = sqlQuery + " OR user = "
+ list[i];
}
}
favoritesQuery = "SELECT car, year, gas_type FROM cars_names WHERE user "
+ sqlQuery
+ " ORDER BY date DESC LIMIT ? , ?";