문제

모니터링을 내 글로벌 제외한 로그 이 오류가 될 것으로 보인을 제거하는 것은 불가능 내가 무엇을 하든지,내 생각에 나는 마침내 그것을 제거하지만 그것은 다시 돌아왔다.당신이 볼 수 있습니다 strack 추적의 오류에 대 비슷한 게시물기.

노트에 대한 환경

IIS6.0,.NET3.5SP1 단일 서버 ASP.인터넷 응용 프로그램

단계로서 이미 취:

  <system.web>
    <machineKey validationKey="big encryption key"
      decryptionKey="big decryption key"
      validation="SHA1" decryption="AES" />

내 페이지에서 기초에 대한 모든 내 페이지

  protected override void OnInit(EventArgs e)
  {
    const string viewStateKey = "big key value";

    Page.ViewStateUserKey = viewStateKey;
  }

또한 소스에서의 페이지를 볼 수 있습의 모든 것 ASP.NET 생 숨겨진된 필드를 제대로의 맨 위 페이지입니다.

도움이 되었습니까?

해결책

첫째 모든 시작할 수 있습니다 사실에서,그 이 오류의 보기 상태에서 일어나 다시 게시.

또한 내가 말 내가 모든 것을 하나 하나 제안 하이 문제를 방지 할 수 있습니다.가의 단계이지만,2 개의 수영장이 실행되는 동일한 페이지입니다.

그래서 누군가가 수행하는 활동, 에테르는 남자,에테르 다른 어떤 검색에 의하여 기계''를 클릭하에서 당신의 페이지,또는 일부 해커를 확인하려고 시스템에 대한 문제...

나는 유사한 문제(드물지만 기존 사람),그리고 마지막으로 찾는 사람들로 해킹을 시도하고 테스트 나 페이지입니다.(에서 동일한 IP 가 및 dos 공격)

나는 수정 기능 LoadPageStateFromPersistenceMedium() 는 번역 viewstate,볼 로그인하여 정확히 입력,무엇에서 IPs...다음 시작 했을 모니터는 이러한 결과를 볼 수 있는 뷰 상태 변경에 의해 손으로 또는 완전히 비어 있습니다.

에 오류가 나는 단지로 리디렉션 그에게 동일한 페이지...

여기에 무엇을 했는지...

public abstract class BasePage : System.Web.UI.Page
{
    protected override object LoadPageStateFromPersistenceMedium()
    {
        try
        {
            .. return the base, or make here your decompress, or what ever...
            return base.LoadPageStateFromPersistenceMedium();            
        }
        catch (Exception x)
        {
            string vsString = Request.Form[__VIEWSTATE];
            string cThePage = Request.RawUrl;

            ...log the x.ToString() error...
            ...log the vsString...
            ...log the ip coming from...
            ...log the cThePage...

        // check by your self for local errors
            Debug.Fail("Fail to load view state ! Reason:" + x.ToString());
        }

        // if reach here, then have fail, so I reload the page - maybe here you
        // can place somthing like ?rnd=RandomNumber&ErrorId=1 and show a message
        Responce.Redirect(Request.RawUrl, true);        

        // the return is not used after the redirect
        return string.Empty;
    }    
}

두 번째 이유

이제 하나의 이유가있다 왜 이것은 일어날 수 있는,그 이유는 몇 가지 중 하나이 당신의 페이지를 클릭하기 전에__EVENTVALIDATION 이 로드됩니다.

이 eventValidation 에 두고 그들의 자발적인 참여를 유도하는 asp.net 을 찾고 있는 경우 그들 중 일부에서는 많은 장소에서 페이지,또는 근처에는 버튼을,이 가을의 끝 페이지입니다.

그래서 만약 당신이 볼 viewstate 에 최고의 페이지,어디에 있는 유효성 검사???어쩌면 이것은 절대로드-페이지에 손상?, 너무 빨리 사용자가 페이지가 있는가?

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" ... >

을 피하기 위해 이런 종류의 문제 내가 만들어 간단한 자바 스크립트는 나가지 않도록 그것은 버튼을 누르지 않으면 이 입력되었을 로드!!!.

하나 더 많은 주석__EVENTVALIDATION 은 항상 선물!그래서 어쩌면 더 안전한지를 검색한 경우 이 필드를 일반적인 솔루션이지만,자바 스크립트릭을 확인하는 경우에는 전체 페이지 로드,또는 다른 무언가를 생각합니다.

여기에 내 마지막으로 솔루션 jQuery:(주는지 확인에 PageLoad 경우 eventvalidation 존재!).나는이 위치에 MasterPages.

<script language="javascript" type="text/javascript">
    function AllowFormToRun()
    {
        var MyEventValidation = $("#__EVENTVALIDATION");

        if(MyEventValidation.length == 0 || MyEventValidation.val() == ""){
            alert("Please wait for the page to fully loaded.");
            return false;
        }

        return true; 
    }       
</script>

protected void Page_Load(object sender, EventArgs e)
{
    // I do not know if Page can be null - just in case I place it.
    if (Page != null && Page.EnableEventValidation)
    {
        Form.Attributes["onsubmit"] = "return AllowFormToRun();";
    }
}

할 수 있는 테스트를 배치하여 근처의 버튼을 당신의 페이지 작업이 지연될 수 있습니다.

<% System.Threading.Thread.Sleep(5000); %>

업데이트

오늘 나에서 로그인이 다시 메시지에 대한 WebResource 과 내가 무엇을 발견하는 로봇을 받고 있는 페이지와 모든 문서의 링크에서 더 낮은 경우, 매개 변수를 포함하여,이것이 하나의 이유를 못하고 올바른 인코딩된 문자열과 같은 메시지 패딩이 잘못되었고 제거할 수 없습니다.

희망이 도움을 더합니다.

다른 팁

설문조사 웹 페이지의 발견으로 여러한 키워드에서 오류 메시지를 나타내는 유형 의 오류 상대적으로 일반적이,일반적으로 임의(외관에 이상)그리고 불행하게도 거의 인클루시브의 명시적인 작업 또는 설명이...

의 존재는 많은 유사한 아직 다른 상황은 아마도 연결은 매우 다양한 아키텍처와 기본 구성할 수 있는 어떻게든 이어질을 확보하지 못하는 암호화 계층을 주장의 신뢰성 MAC(메시지 인증코드)요청에서 페이지:

  • 서버 팜 설치
  • 십자가 도메인/페이지 신디케이트로 조직
  • 세 번째 파티를 위젯 라이브러리와 같은
  • 실제 ASP 프로그램 논리에(물론)

하나는 상대적으로 잦은"마커는"이러한 버그 보고서의 언급은 리소스를 요청(예를 들어. WebResource.axd).
이러한 요청은 자주 로그인하지 않았 (지 않도록 그들을 팽창 로그 파일 크기와 이벤트의 상대적 관심).이 부에서 로그 파일을 사실 그들은 종종 캐시(따라서는 상대적인 무작위와 자주 버그의 발생)설명할 수 있습니다 어떻게 이것이 가능한 원산지의 버그"가는 레이더에서".이것은 또한 제안에서의 재현하기 위해 노력하고,버그(를 추적하는 동안에서 로그를 실시간 등등)유용할 수 있습을 방지하는 웹 브라우저에서 캐싱(또는 대상을 명확한 그 캐시 처음).

에서 짧은,여기에 몇 가지 아이디어 및 물건을 찾는다:

  • 로깅을 시작하자.axd 요청
  • 시도하고 공동 관련 등 axd 요청과 오류 이벤트에서 제외 로그인
  • 모된 페이지를 참조 자원
  • 면 농장 설정에서,모든 경우 같은 키를 사용하여(분명히 조각에서 제공하는 힌트 질문에 여러 IIS 서버)
  • 의심의 페이지를 제 3 자 넥타이(검색 서비스,제휴 프로그램...)

도움이 되기를 바랍;-)

당신은 당신의 문제는 암호화 관련과에 의해 발생하지 않 대형 ViewState?는 경우 ViewState 은 문제할 수 있습 덩어리는 그것의 값을 변경 페이지/MaxPageStateFieldLength 웹.config

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