mySQL DB では、ストアド プロシージャを使用して外部から DB を使用するための API を作成しました。
SQL インジェクションを防ぐために、このミッションのために、EXECUTE 権限のみを持つ特別なユーザーを指定しました。
ユーザー ID の接続のテーブルがあり、不明な数のパラメーターを含むプロシージャを作成する必要があります。プロシージャは、受信したすべての ID をテーブルに挿入する必要があります。
今のところ、私はmysqliでPHPを使用しており、自分でクエリを作成しています-これは非常に安全ではありません-そして、次のようになります:
/**
* Add new rows to the invited users tables
* @param $invitingUser string the inviting user facebook's Id
* @param $invitedUsers array the invited users facebook's Id
*/
function addInvitedUsers($invitingUser, $invitedUsers)
{
//check if all the parameters are set
if (isset($invitingUser) && isset($invitedUsers))
{
//create the basic query for insert
$query = "Insert Into Invited_Users (Inviting_id,Invited_Id) Values ";
//for each invited users - add it to the query
foreach($invitedUsers as $invitedUser)
$query . "('$invitingUser','$invitedUser') ";
if ($this->queryDb($query));
echo "added new invited users";
}
//if parameters are not set - message
else
echo "parameters can't be null";
}
私は私に同じ能力を与える手順を作成したい..
配列または未定義の数のパラメーターをストアド プロシージャに送信できないことは知っていますが、セーフ モードで同じ機能を実行できる他の方法があると確信しています..