2008-12-09 5 views
5

SQL 주입을 방지하기 위해 모든 asp 코드를 점검해야합니다.세션을 위조 할 수 있습니까?

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

세션이 어떻게 도용 될 수 있습니까?

감사합니다.

+0

왜이 질문을 downvote? 문법 오류 이외에, 나는 그것이 합법적 인 질문이라고 생각한다. – Salamander2007

+0

질문 텍스트에 초점이 맞지 않으므로 아마 downvoted가 있습니다. 주제는 당신이 하이재킹에 대해 이야기하고 싶어한다는 것을 나타내지 만 텍스트는 SQL 주입에 대해 이야기하기 시작합니다. – AnthonyWJones

답변

3

세션을 도용 할 수 있습니다. 쿠키가 올바르게 기억되면 Classic ASP는 쿠키 기반 세션 식별자 만 지원합니다. 누군가가 그 쿠키 (도청 장치)를 훔칠 수 있다면 그들은 합법적 인 사용자와 동일한 세션을 얻을 수 있습니다.

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

3

SQL 삽입을 방지하려면 문자열을 연결하여 SQL 쿼리를 작성하는 대신 매개 변수화 된 쿼리를 사용하십시오. 세션 도용은 완전히 다른 주제입니다. 요청마다 세션 쿠키를 변경하면 더 어려워 질 수 있고 HTTPS를 사용하면 완전히 피할 수 있습니다. 이와 관련된 (그리고 더 큰) 문제는 사이트 간 위조 요청 (look up)입니다.

1

글쎄, 사용자 입력을 보안하기 만하면됩니다. 따라서 질문해야 할 질문은 "이 데이터가 사용자 입력에서 왔습니까?" 그렇다면 SQL 매개 변수를 사용해야합니다.

더 큰 규모로 데이터 접근을 수행하기위한 개별 메소드 & 클래스를 고려할 때 SQL에 제공하는 모든 텍스트 매개 변수에 대한 sql 매개 변수를 사용해야합니다. 이 시나리오에서는 SQL 매개 변수가 필요하지 않습니다. 메소드 매개 변수로 숫자를 수신하면 SQL 인젝션을 가질 수있는 방법이 없기 때문입니다.

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

1

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

관련 문제