PostgresSQL でそのようなものを使用する場合、SQL インジェクションに対して安全かどうかを知りたいです。
CREATE or REPLACE FUNCTION sp_list_name( VARCHAR )
RETURNS SETOF v_player AS '
DECLARE
v_start_name ALIAS FOR $1;
r_player v_player%ROWTYPE;
v_temp VARCHAR;
BEGIN
v_temp := v_start_name || ''%'';
FOR r_player IN
SELECT first_name, last_name FROM v_player WHERE last_name like v_temp
LOOP
RETURN NEXT r_player;
END LOOP;
RETURN;
END;
' LANGUAGE 'plpgsql' VOLATILE;
この関数を使用して、文字で始まるプレーヤーの名前を一覧表示したいと考えています。
select * from sp_list_name( 'A' );
名字が A で始まるプレイヤーを教えてくれます。
SQLを注入しようとしました
select * from sp_list_name( 'A; delete from t_player;--' );
select * from sp_list_name( '''; delete from t_player;--' );
私は安全ですか?
どのような場合に注射できますか?
よろしく