2013-04-19 2 views
0

질문 : 내 웹 사이트 양식 만 허용하고 싶습니다. 내 양식을 제출하면 <form action="link"으로 이동하여 www.domain.com/link로 이동하십시오. 그러나 www.domain.com/link URL에 대한 직접 액세스를 거부합니다.외부 도메인 액세스 금지

시도는 :

Options -Multiviews 
RewriteEngine on 

RewriteCond %{REQUEST_URI} link 
RewriteRule ^.*/?link/? - [F] 

하지만 양식이 페이지에 액세스 제출 수 있도록하는 방법을 모른다 : 지금까지 나는 mod_rewrite를 함께 접근을 금지하는 방법을 알고있다. 나는 양식이

Options -Multiviews 
RewriteEngine on 

RewriteCond %{REQUEST_URI} link 
RewriteCond %{QUERY_STRING} !secret_key 
RewriteRule ^.*/?link/? - [F] 

대체을 수행하여 제출받을 경우 액세스 할 수 있도록 비밀 값으로 입력 태그를 사용의 가능성을 탐구 : 그러나 사용자가 복사 쿼리 문자열 때마다 같은 해당 키를 붙여 단지 수 그들은 페이지에 직접 액세스하려고합니다. 그리고 mod_rewrite를 사용하여 쿼리 문자열을 숨긴 경우에도 똑똑한 사용자는 입력 태그를 검사하여 여전히 페이지에 액세스 할 수 있습니다. 이렇게 페이지를 보호하기위한 확실한 방법은 무엇입니까? 쿼리 문자열을 오염시키지 않습니다.

+0

$ _SESSION에 쿼리 문자열 비밀 키를 숨길 수 있습니까? 세션 변수를 쿼리 문자열로 전달하는 방법은 다음 질문 일 것입니다. –

+0

... 왜 이걸 신경 쓰시겠습니까? 귀하가하는 일과 관계없이 똑똑한 사용자는 해당 양식을 제출하는 요청을 스푸핑 할 수 있습니다. 그것이 HTTP의 특성입니다. 좋은 요청은 사실 나쁜 요청과 구별 할 수 없습니다. 특히 "이 형식에서만"과 같은 조건이있는 경우. 내가 생각해 낼 수있는 가장 가까운 것은 임의로 생성 된''을 폼에 추가하고 저장된 $ _SESSION 변수 중 일부를 체크하는 것입니다.하지만 여러 개의 창은 어떨까요? 그 때 무엇? 만료 날짜가있는 유효한 키 배열 유지? 나는 모든 요청이 오염되었다고 가정 할 때 당신이 더 낫다고 생각합니다. – FrankieTheKneeMan

+0

@ 소피아 난 당신의 문제는 무엇입니까? 왜이 양식에서 요청을 받아야한다고 생각하십니까? –

답변

0

이것은 mod_rewrite에서 안정적으로 수행 할 수 없습니다.

양식 값이 제대로 채워지는지 확인하십시오. 어쨌든해야합니다. 값이 채워지지 않으면

header('Location: elsewhere.html'); 

으로 리디렉션하거나 다른보기를 대신 반환하십시오.