2009-10-12 1 views
0

ASP.Net에서 동적 차트 및 그래프를 만들려면 각 차트의 (GDI +) 코드를 별도의 페이지 파일에 배치해야합니다. 따라서 차트를 화면에 표시하는 경우 차트 페이지를 실행하지 않아도됩니다.ASP.Net에서 동적으로 생성 된 차트에서 액세스 할 수있는 쿼리 문자열을 피하는 방법은 무엇입니까?

차트 페이지에는 차트 생성 코드뿐만 아니라 SQL Server에서 관련 데이터를 가져 오는 코드가 포함되어 있습니다. 생성 된 차트 객체는 Response.OutputStream에 저장됩니다.

차트를 표시하려는 콘텐츠 페이지는 차트를 생성하는 데 사용할 데이터 (예 : 사용자 ID, 프로젝트 ID, 드롭 다운 목록에서 선택)를 결정하는 다양한 매개 변수를 제공합니다. 차트를 내용 페이지의 일부로 표시하려면 페이지에 이미지 개체를 배치하고 다양한 차트 매개 변수를 수집하고 코드 뒤에 이미지 페이지의 개체 URL과 차트 매개 변수를 설정합니다. 쿼리 문자열에 추가되었습니다.

브라우저에서 콘텐츠 페이지에 표시되는 차트 이미지를 마우스 오른쪽 버튼으로 클릭하면 차트가있는 페이지를 표시하는 "이미지 열기"옵션이 표시됩니다. 그 자체로 (아마도 차트 페이지에서 생성 된 것처럼 놀랄 일이 아닙니다.) 그러나 문제는이 차트 페이지에서 쿼리 문자열이있는 전체 URL이 표시된다는 것입니다. 즉, 사용자가 쿼리 문자열의 값을 변경하여 새 차트를 생성 할 수 있습니다. 이는 사용자가 액세스 할 수없는 데이터에 대한 차트를 생성 할 수 있으므로 큰 문제입니다.

동적 차트를 생성하고 표시하는이 "차트 페이지"방식을 계속 사용하면서이 문제를 방지 할 수있는 방법이 있습니까? 또는 동적으로 생성 된 이미지를 디스크 나 SQL Server Filestream 개체 등의 파일로 저장 한 다음 페이지에서 참조해야합니까?

그건 그렇고, 나는 ASP.Net 차트 컨트롤을 사용할 수있는 다양한 알고 있습니다. 그러나 생성해야하는 차트는 매우 특수화 된 응용 프로그램에 맞게 사용자 지정되므로 이러한 컨트롤은 불행하게도이 경우에는 작동하지 않습니다.

답변

0

이전 프로젝트 중 하나에 대해 동일한 우려 사항이 있습니다. 하나의 저렴하지만 100 % 바보가 아닌 해결책은 이미지를 처리하기 전에 http-referer 검사를 삽입하는 것입니다. 내 페이지에서로드 된 이미지에는 도메인의 리퍼러 URL이 있고, 브라우저를 통해 직접 입력 한 이미지에는없는 URL이 있습니다.

물론 위조 URL을 위장하여 해킹하기가 쉽지만, 여전히 억제력의 일부 형태입니다. 다른 사람들이 해결책을 제시 할 수 있다면 기쁠 것입니다.

또 다른 방법은 쿼리 문자열에 일종의 체크섬 매개 변수를 추가하는 것입니다. 체크섬이 '정확함'일 때만 이미지를 생성하고 '해독'하는 방법을 알고 있습니다.

+0

대단히 감사합니다! 이 제안은 현재 상황보다 나은 개선점을 제공합니다. –

+0

어쨌든 완료되면 구현을 공유 할 수 있습니다. :) –

0

우선, 귀하의 사용자가 귀하의 웹 사이트에 인증 (로그인)되어 있다고 가정하고 그들이 누구이며 액세스 권한이있는 데이터/차트를 알고 있습니까?

이미지 생성 코드에서 들어오는 매개 변수를 확인하여 현재 사용자가 요청한 데이터에 액세스 할 수 있는지 확인해야합니다. 일반적으로 이것을 위해 사용자/권한 테이블을 쿼리합니다 (또는 회원 API 또는 기타 호출).

URL을 숨기려고하면 (예 : 이미지 생성 페이지에서 GET 대신 POST를 수행하는 경우) "잘 모르겠다"는 것이 좋지 않습니다.

그런데 문제를 "URL 변조"라고하며, Google 검색에서 올바른 방향으로 안내해야합니다.

+0

예, 사용자가 인증되므로 실제로 차트의 데이터를 전달하는 SQL 프로 시저에 권한 검사를 추가 할 수 있습니다. 또한,이 접근법은 "Fat Database"패러다임에 부합하는 것처럼 들립니다. (예 : http://ora-00001.blogspot.com/2009/06/fat-database) -or-thick-database-approach.html). URL에 관해서는, 나는 사용자가 그것을 조작하려고 할 때 적절한 에러 메시지를 제공 할 필요가 있다고 가정한다. –

관련 문제