私は他の誰かが作成したデータベースを使用しています (そして私はそれを変更する権限がありません)。ただし、データベース内のストアド プロシージャを調べていると、次の手順に気付きました。
DELIMITER $$
CREATE PROCEDURE `logIn`(userName varChar(50), userPass varChar(50))
BEGIN
declare userID int;
SELECT
u.userID INTO userID
FROM
users u
WHERE
u.userName=userName
AND u.userPassword=MD5(userPass);
IF (IFNULL(uID,-1) > 0) THEN
select 1 as outMsg;
ELSE
select 0 as outMsg;
END IF;
END$$
、およびのusers
3 つの列を持つ対応するテーブルを使用します。userID INT
userName VARCHAR(50)
userPassword VARCHAR(50)
私はこれがあまり得意ではないので、SQL インジェクションを許可しないようにそのような関数の入力をサニタイズする必要があるかどうか、またそうでない場合はなぜですか? 一般的な経験則は非常に高く評価されます。
PS この関数は、フォーム送信時に JS スクリプトから呼び出されます。