Postgres SQL에서 이러한 것들을 사용할 때 SQL 주입에 대해서 안전한지 알고 싶습니다.
CREATE or REPLACE FUNCTION sp_list_name ( VARCHAR) は、$1;r_player v_player% の v_player ALIAS を返しますROWTYPE; v_temp VARCHAR; BEGIN v_temp:= v_start_name | | | ‘%’; SELECT first_name, last_name FROM v_player (v_temp LOOP RETURN NEXT r.player); END LOOP; RETURN;’LANGUAGE ‘plsql’ VOLATIONALUE;
이 기능을 사용하여 문자로 시작하는 플레이어의 이름을 나열하고 싶습니다.
sp_list_name(‘A’)에서 *를 선택합니다;
A로 시작하는 성을 가진 플레이어를 제공합니다.나는 sql을 주입하려고 시도했습니다.
sp_list_name(‘A;t_player에서 삭제;–‘ sp_list_name(”); t_player에서 삭제;–‘);
저는 안전합니까?어떤 경우에 주사할 수 있습니까?병문안 당신은 스스로 SQL을 생성하지 않기 때문에 이것은 안전해 보입니다.스토리지 프로시저를 호출하는 데이터가 어디에서 왔는지 알 수 없습니다. 따라서 여전히 버퍼 오버플로 등을 방지해야 합니다.
저는 안전합니까?어떤 경우에 주사할 수 있습니까?병문안 당신은 스스로 SQL을 생성하지 않기 때문에 이것은 안전해 보입니다.스토리지 프로시저를 호출하는 데이터가 어디에서 왔는지 알 수 없습니다. 따라서 여전히 버퍼 오버플로 등을 방지해야 합니다.
SQL 주입을 방지하기 위한 규칙 #1: 신뢰할 수 없거나 제어할 수 없는 사람/무언가에서 오는 모든 입력을 삭제해 주세요.문제 자체는 데이터베이스 코드에 있는 것이 아니라 그 명령을 실행하는 응용 프로그램에 있습니다.
SQL 주입을 방지하기 위한 규칙 #1: 신뢰할 수 없거나 제어할 수 없는 사람/무언가에서 오는 모든 입력을 삭제해 주세요.문제 자체는 데이터베이스 코드에 있는 것이 아니라 그 명령을 실행하는 응용 프로그램에 있습니다.
SQL 주입을 방지하기 위한 규칙 #1: 신뢰할 수 없거나 제어할 수 없는 사람/무언가에서 오는 모든 입력을 삭제해 주세요.문제 자체는 데이터베이스 코드에 있는 것이 아니라 그 명령을 실행하는 응용 프로그램에 있습니다.
my $bar = “foo; (‘/etc/password’;”; my $baz = $bar;
실제로 평가가 없을 때 연결 해제를 수행합니다.실제로 평가가 없을 때 연결 해제를 수행합니다.실제로 평가가 없을 때 연결 해제를 수행합니다.내용을 확인할 수 있습니다.v_start_name. 문자열에 세미 콜론, 주석 문자, 등호 등을 확인하세요.문자와 16진 값의 양쪽을 확인하는 것을 잊지 마세요.하이픈으로 연결된 이름을 허가하는 것을 명심하세요.가령”Smith-Brown”은 허용되는 경우가 있습니다.”Smith-Brown”은 잠재적으로 주입식입니다.SQL Injection의 Hex에 익숙하지 않은 경우 다음은 빨리 소개입니다.http://www.arejae.com/blog/sql-injection-attack-using-t-sql-and-hexadecimal.htmlhttp://www.securityfocus.com/infocus/1768선언한 v_start_name$1의 별칭 r_player v_player%ROWTYPE;v_temp VARCHAR;시작-여기에 새로운 의사 코드 v_start_name에 잘못된 문자가 있으면 에러 메세지와 함께 종료합니다.–여기에서 의사 코드를 종료합니다.v_temp:=v_start_name||”%”;r_player INSELECT first_name, last_name FROM v_player WHERE last_name like v_temp고리 RETURN NEXTr_player;종료루프;반품;끝;문안 인사칼検出された言語がありません。
入力言語を確認してください。v_clean_name VARCHAR; Select v_clean_name = Replace(v_start_name, ‘;’);이는; SQL 주입 공격을 방해하는 공백으로, 자세한 내용은 Postgres SQL 문자열 함수를 참조하십시오.LFSR Consulting도 언급했듯이. Black List(즉, 사용자가 Replace에서도 SQL 주입 공격을 수행할 수 있으므로 데이터 정리를 시도한다)보다는 White List(즉, ‘;’와 같은 잘못된 문자가 있는 입력을 처리하지 않는다)를 사용하는 것이 좋습니다.자세한 내용은 SQL 주입 공격을 참조하십시오.이는; SQL 주입 공격을 방해하는 공백으로, 자세한 내용은 Postgres SQL 문자열 함수를 참조하십시오.LFSR Consulting도 언급했듯이. Black List(즉, 사용자가 Replace에서도 SQL 주입 공격을 수행할 수 있으므로 데이터 정리를 시도한다)보다는 White List(즉, ‘;’와 같은 잘못된 문자가 있는 입력을 처리하지 않는다)를 사용하는 것이 좋습니다.자세한 내용은 SQL 주입 공격을 참조하십시오.SQL 인젝션으로부터 보호하는 적절한 방법은 화이트리스트*를 사용하는 것입니다.잘못된 방법은 블랙리스트입니다. 허용되지 않은 문자를 블랙리스트에 올리면 공격자를 따라잡을 수 없기 때문에 문제가 발생할 수 있습니다. ASCII 테이블, 이스케이프 문자 등을 통해 블랙리스트를 우회하는 방법이 있습니다.또한 당신의 사이트에서 시도해 볼 수 있는 멋진 치트 시트가 있습니다. 몇 가지 테스트를 수행하여 실패를 시도하십시오.* DB가 아닌 어플리케이션으로 (고마워요 James)SQL 인젝션으로부터 보호하는 적절한 방법은 화이트리스트*를 사용하는 것입니다.잘못된 방법은 블랙리스트입니다. 허용되지 않은 문자를 블랙리스트에 올리면 공격자를 따라잡을 수 없기 때문에 문제가 발생할 수 있습니다. ASCII 테이블, 이스케이프 문자 등을 통해 블랙리스트를 우회하는 방법이 있습니다.또한 당신의 사이트에서 시도해 볼 수 있는 멋진 치트 시트가 있습니다. 몇 가지 테스트를 수행하여 실패를 시도하십시오.* DB가 아닌 어플리케이션으로 (고마워요 James)참조 화이트 리스트.특정의 다른 조건에 따르는 경우는 괜찮습니다.모든 입력을 가장 간단한 형식으로 분해할 절대적으로 중요하므로 SQL쿼리의 이름, 작은 따옴표 등을 확인하지 마세요.다른 문자 집합을 사용하여 표현 또는 인코딩할 수 있고, 이는 화이트 리스트의 일부를 형성하지는 않습니다.SQL키워드 자체.나는 보호된 리소스에 대한 유저명/패스워드를 허용하는 특정 클라이언트를 위해서 일했습니다(궁극적으로는 공항의 보안 부분에 대한 액세스 경로를 얻을 수 있다).’를 입력한 뒤 사용자 계정과 비밀 번호를 검색하는 SQL쿼리를 작성하고 로그온 필드를 우회할 수 있습니다.문제는 클라이언트가 웹 개발을 한번도 한 적이 없다고 생각하는 벤더와 같이 사이트를 구축하는 데 이미£200k을 날렸다는 것입니다.수정 사항은 60,000파운드의 추가로 조합, 선택, etal키워드만을 확인하는 유효성 검사 func()이었습니다.그들이 canicolization/encoding(내가 설명해야 했다)때문에 무엇을 했는지 물었을 때, 그것은 tumbleweed시간이었습니다.Dev house과(고가)프로젝트는 통조림으로 되었습니다.참조 화이트 리스트. 특정한 다른 조건을 따르는 경우는 괜찮습니다. 모든 입력을 가장 간단한 형식으로 분해하는 것이 절대적으로 중요하기 때문에 SQL 쿼리의 이름, 작은 따옴표 등을 확인하지 마세요. 다른 문자 세트를 사용하여 표현하거나 인코딩할 수 있으며, 이는 화이트리스트의 일부를 형성하는 것이 아닙니다. SQL 키워드 자체.나는 보호된 자원에 대한 사용자 이름/비밀번호를 허용하는 특정 클라이언트를 위해 일하고 있었습니다(궁극적으로는 공항의 보안 부분에 대한 액세스 패스를 얻을 수 있다). ‘를 입력한 후 사용자 계정과 비밀번호를 검색하는 SQL 쿼리를 생성하여 로그온 필드를 우회할 수 있습니다.문제는 클라이언트가 웹 개발을 한 번도 해본 적이 없는 것으로 보이는 벤더와 함께 사이트를 구축하는 데 이미 £200k를 날렸다는 것입니다. 수정사항은 60,000파운드 추가로 조합, 선택, etal 키워드만 확인하는 유효성 검사 func()였습니다. 그들이 canicolization/encoding(내가 설명해야 했다)을 위해 무엇을 했는지 물었을 때, 그것은 tumbleweed 시간이었습니다.Dev house와 (고가의) 프로젝트는 통조림이 되었습니다.