문제

SQL 주입을 방지하려면 모든 ASP 코드를 확인해야합니다.

세션 개체도 확인해야합니까?

세션은 어떻게 납치 될 수 있습니까?

고맙습니다!!

도움이 되었습니까?

해결책

세션은 납치 할 수 있습니다. 정확하게 기억한다면 클래식 ASP는 쿠키 기반 세션 식별자 만 지원합니다. 누군가가 그 쿠키 (와이어 탭)를 훔칠 수 있다면 합법적 인 사용자와 동일한 세션을 얻을 수 있습니다.

세션 객체도 확인해야합니까? 조건에 따라서. 세션에 저장된 모든 객체가 "안전"(입력 소독)인지 확인하면 세션 객체를 건너 뛸 수 있습니다. 애플리케이션 어딘가에서 안전하지 않은 소스에서 데이터를 가져 와서 세션 객체에 넣으면 확인해야합니다.

다른 팁

SQL 주입을 피하려면 문자열을 연결하여 SQL 쿼리를 구축하는 대신 매개 변수화 된 쿼리를 사용하십시오. 세션 납치는 완전히 다른 주제입니다. 각 요청마다 세션 쿠키를 변경하여 더 어려워 질 수 있으며 HTTPS를 사용하여 완전히 피할 수 있습니다. 관련 (및 더 큰) 문제는 크로스 사이트 요청 위조입니다 (찾아보십시오).

글쎄, 당신은 실제로 사용자 입력을 보호하면됩니다. 그래서 당신이 스스로에게 물어봐야 할 질문은 다음과 같습니다. "이 데이터는 사용자 입력에서 나왔습니까?" 그렇다면 SQL 매개 변수를 사용해야합니다.

더 큰 규모로 데이터 액세스를 수행 할 개별 메소드 및 클래스가 있다는 것을 고려하면 SQL에 제공하는 모든 텍스트 매개 변수에 대해 SQL 매개 변수가 있어야합니다. 이 시나리오에서 SQL 매개 변수는 실제로 필요하지 않습니다. 메소드 매개 변수로 숫자를 수신하면 SQL 주입을 가질 수있는 방법이 없기 때문입니다.

그러나 의심스러운 경우 SQL 매개 변수를 사용하십시오.

세션 변수는 서버의 메모리에 저장됩니다. 쿠키 ID 만 클라이언트에 저장됩니다. 클라이언트에서 오지 않는 한 세션의 변수에 대해 걱정할 필요가 없습니다. SQL 주입을 위해 데이터베이스에 전달 된 모든 변수를 확인하는 것이 더 쉬울 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top