인증을 피하면서 보안 페이지의 ASP.NET 컨트롤에서 다시 게시 할 수없는 게시

StackOverflow https://stackoverflow.com/questions/201796

  •  03-07-2019
  •  | 
  •  

문제

표준 ASP.NET 양식 인증을 사용하고 있습니다. 특정 페이지에는 사용자가 로그인해야합니다. 이 페이지 중 일부는 HTTPS에 의해 전달됩니다. 각 페이지 상단에 검색 컨트롤이 있습니다. 이것이 사용되면 현재 페이지에 로그인이 필요한 경우에도 사용자 세션이 만료되었는지 여부는 신경 쓰지 않습니다.

그러나 현재 검색을 수행 할 때 내장 된 양식 인증은 게시중인 페이지에 인증이 필요하고 이전 페이지와 함께 사용자를 로그인 페이지로 리디렉션합니다. 검색 결과 페이지가 아닙니다 추천자로.

여기에서 보안을 우회하는 가장 좋은 방법은 무엇입니까? PostbackUrl 속성을 사용하여 다른 페이지에 게시하는 것을 고려했지만 HTTP가 아닌 경우 "사용자가 마음에 들지 않는 연결된 연결에 데이터를 게시합니다"메시지가 표시됩니다.

도움을 주셔서 감사합니다.

편집 : 검색 페이지에서 얻을 것을 제안 해 주셔서 감사합니다. 우리는 이미이 작업을 수행하고 있지만 쿼리 문자열은 검색 입력 컨트롤에 의해 구성된 다음 리디렉션됩니다. 포스트 백을 사용하지 않고 쿼리 문자열을 어떻게 구축 할 수 있습니까? (분명히 JavaScript는 옵션이지만 대체 메커니즘을 찾기를 바랐습니다.)

도움이 되었습니까?

해결책 3

다른 답변에서 제안한 바와 같이,이를 수행하는 가장 올바른 방법은 검색 입력 제어를 별도의 형식으로 얻는 것입니다. 그러나 페이지에 하나의 서버 측 양식 만 가질 수 있으므로 ASPX에서는 어렵습니다.

결국 내가 잘 작동하는 솔루션은 "검색"버튼을 클릭 한 경우 (ID가있는 Param이 존재하는지 확인하여)를 찾은 후 쿼리 문자열을 만들었을 때 HTTPModule을 갖는 것이 었습니다. 기준 매개 변수를 찾고 검색 결과 페이지로 리디렉션됩니다. 이는 트리거되기 전에 (보안되지 않은) 검색 결과 페이지로 이미 리디렉션을 호출 했으므로 모든 인증 / 승인 모듈이 우회되어 있음을 의미합니다.

약간 부서지기 쉬지만 우리에게는 매우 잘 작동합니다.

다른 팁

검색 페이지의 경우 GET 요청을 통해 검색이 발생하는지 확인하려고합니다. (예 : 쿼리 문자열에 "Q"가있는 Google을 좋아합니다) 기회가 게시물을 수행하고있을 가능성이 있습니다.

그러니 당신을 바꾸십시오

<form method="post" ...>

에게

<form method="get" ...>

대부분의 개발자가 검색 페이지로하는 가장 큰 실수는 게시물을 다시 작성하는 것입니다. HTTP는 쿼리 문자열 (따라서 이름)을 통해 쿼리 또는 검색을 수행하고 본문 대신 쿼리 문자열에 게시 할 양식을 가져 오도록 설계되었습니다. 이렇게하면 모든 검색 장치가 검색 페이지, 브라우저 검색 상자를 사용할 수 있습니다.

둘째, 당신은 특별한 것을 만들고 싶습니다 위치 구성 검색 페이지. 이것을 web.config에 추가합니다.

<location path="my-search-page.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

이렇게하면 해당 한 페이지에 대한 특별한 재정의가 생성되고 위치 태그 내부의 모든 것은 정확히 동일한 web.config 구조를 사용하여 Web.config를 무시합니다.

모든 사용자를 허용하려는 각 페이지에 대해이를 반복하려고합니다.

검색 결과 페이지가 PostBack을 수행하는 경우 검색 버튼을 클릭하기 전에 PagEload 이벤트가 시작됩니다.

따라서 페이지가 필요한 경우 로그인 버튼을 클릭하기 전에 로그인 명령이 실행됩니다. 이벤트를 클릭하여 로그인 화면으로 다시 보냅니다.

이것을 둘러싼 몇 가지 방법이 있습니다. 검색을 일반적인 HTML 양식으로 만들고 Itperform A Get Post를 작성하고 "Nick"에 의해 언급되었습니다.

ORT 전체 페이지가 .NET Postback 양식 내부에 있으면 검색 버튼 이벤트를 페이지로드의 과부하에 추가하여 먼저 발사해야합니다.

이 사이트에는 페이지에 좋은 기사가 있습니다.http://www.15seconds.com/issue/020102.htm

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