2012-06-27 3 views
1

기본 웹 사이트에는 프로필 페이지가 있습니다. 나는 "심상"폴더에있는 단면도 심상을, 나 생각한다 나쁜 아이디어 생각한다. 이제는 Images 폴더를 App_Data로 이동하여 이제는 해당 폴더에 대한 원격 액세스가 허용되지 않습니다 (더 많은 보안 및 개인 정보 보호). 그래서, 이제 내 코드는 getimages라는 메서드를 가진 ServiceImages라는 서비스를 호출합니다.이 서비스는 사용자 이름이 전달됩니다. 그래서 그것은 "username"+ extension이라는 이름의 이미지를 반환합니다 (나는 username의 이름으로 이미지를 저장합니다). 그러나 원격 도구는 이미지를 가져 와서 저장하기 위해 사용자 이름으로 알파벳과 숫자의 순열을 사용하여 해킹하고 모든 이미지를 가져 오는 데 사용할 수 있습니다. 그건 분명 내가 원하는 것이 아닙니다. 적어도 모든 프로필 이미지를 쉽게 가져올 수는 없습니다. 그렇다면 자동화 된 도구에 대한 액세스를 어떻게 제한 할 수 있습니까? IP를 사용하여 좋은 아이디어를 확인하고이를 수행하는 방법은 무엇입니까? 이미지가 데이터베이스에 저장되는 것을 원하지 않습니다. 자동화 된 해킹 도구 나 스크립트를 차단할 수있는 다른 멋진 방법이 있습니까? 내 웹 사이트가 해킹 당했다는 소식을 듣고 싶지 않습니다.프로필 이미지를 반환하는 웹 처리기 작성?

+0

그 작업을 외부 응용 프로그램에 위임 할 수있는 경우에 대비하여 gravatar (http://gravatar.com/) – Jupaol

+0

에게 주겠다. 이미지를 저장하고 제공해야하며 이미지를 외부화 할 수 없습니다. –

답변

0

이미지를 app_data 또는 그 하위 폴더에두면 직접 브라우저가 중지됩니다. 당신이 가진 것은 일종의 "안전하지 않은 직접 객체 참조"입니다. 따라서 간접적 인 객체 참조로 바꾸는 것, 예를 들어 username.jpg가 아닌 프로필 그림의 파일 이름에 GUID를 사용하는 것입니다. 그러면 사용자가 파일을 요청할 때 사용자를 조회 할 때 맵핑 테이블에서 guid.

물론 이것은 모든 단일 GUID를 통과하는 사람을 막지는 못하지만, 오히려 오랜 시간이 걸릴 것입니다. 당신은 비열하고 IP 주소에 x 분 동안 실패한 조회가 y 분 안에있는 경우 Z 분 동안 모든 요청을 중단합니다. 이는 처리기 내부에서 수행하기에 충분합니다.

하지만 실제로 가치가 있습니까? 프로필 사진을 얻으려면 프로필 사진을 로그인 한 사용자로만 제한하고 싶지 않으면 해킹이되지 않습니다.이 경우 익명 액세스를 허용하지 않는 디렉토리에 넣으십시오.

0

IMHO : 인증 된 사용자에 대한 클라이언트 요청에 따라 프로필 이미지를 제공해야하므로 IP 주소를 제한 할 수있는 방법이 없다고 생각합니다.

App_Data 폴더는 데이터베이스, XML 데이터를 저장하도록 설계되었습니다. App_Data에 사용자 이미지를 저장하는 것이 좋지 않다고 생각합니다. 해당 폴더에서 디렉토리 탐색을 비활성화하여 이미지 폴더를 확보하고 폴더 위치를 보호 할 수 있습니다.

나는 당신이 프로필 이미지의 이름을 brute force/permutation - 이미지 이름의 조합으로 피하는 더 좋은 방법이 필요하다고 생각한다. GUID의 일종의 고유 키 또는 UserName에 매핑 된 문자/숫자의 임의의 조합을 선호하고 해당 키를 데이터베이스에 저장하십시오.이 고유 키로 이미지 이름을 1 회 변환하고 해당 키를 데이터베이스에 저장해야합니다.

그러나 (http 경로를 직접 사용하거나 동적으로 처리기를 사용하여) 프로필 이미지를 제공하지만 무차별 방식을 사용하여 추측하기 어려운 강력한 파일 이름이 필요합니다.

관련 문제