그래서 이상한 일이 일어나서 그 원인을 정확하게 파악할 수 없습니다. 내 asp.net 프로젝트는 다음 명령을 사용하여 동기화되는 두 개의 프로덕션 서버에 세션 상태와 연결되어 :viewstate MAC에 대한 유효성 검사가 실패했지만 2 개의 Webfarm 서버 중 1 개에서만 발생합니다. (컴퓨터 키가 정확함)
msdeploy -verb:sync -source:webserver,computername=%MACHINE%,username=Administrator,password=%PASSWORD% -dest:webserver 2<&1
응용 프로그램은 2008 R2의 웹 서버 비하인드 두 서버에서 실행되는 asp.net 4.0 웹 사이트입니다 사용자가 연결되면 한 서버에만 고정하도록 설정된 부하 분산 구성. <MachineKey>
은 응용 프로그램 루트 사이트에서 유효성 검사 및 암호 해독 키로 하드 코드 된 것으로 설정되어 있으며 두 서버간에 동일합니다. 내 응용 프로그램은 예외 이벤트를 전자 메일 시스템에 전달하도록 설정됩니다.
무슨 일이 벌어지고 있는지 나는 무서워하는 'viewstate MAC의 검증'을 서버에서 받았지만 서버로드가 50/50으로 나뉘어져 있어도 99/1 스플릿에서 오류가 발생하고 있습니다. 그래서 한 웹 서버가 다른 웹 서버보다 훨씬 더 자주 이러한 오류를 생성합니다. 서버가 동기화되고 모든 구성이 동일하다는 점을 고려하면 이상합니다.
이 문제에 대한 광범위한 검색을 수행 했으므로 언급하지 않거나 다음을 수행하는 솔루션을 찾기가 매우 어려워 보입니다.
<MachineKey>
은 서버간에 동일하지 않습니다. (사실 이것은 내 문제가 아님)enableViewStateMac=false
또는 사이트 보안을 위험에 빠뜨릴 수있는 다른 설정을 지정합니다.- 폼 입력의 모든 액션 태그는 사용자가 이전의 페이지를 클릭하면 (그들이)
- 를 서버의 인스턴스 ID가 동일해야합니다 그들은
- 에 배치 같은 페이지를 참조하는지 확인 전체 페이지 (viewstate)가 다운로드되었습니다 (내 viewstate가 페이지의 맨 위에 렌더링되도록 설정 됨). Response.Redirect를하고 Server.Transfer를
와
다른 사람이 내가 무엇을 볼 수 있는지에 대한 제안 사항이 있습니까? 요점은 내가 할 내 사이트의 보안 구멍을 열어서이 문제를 해결하고 싶습니다.
사용자가 처음 로그인 할 때 양식 인증을 사용하여 인증 한 직후 사용자에게이를 알리지 못하는 것으로 보입니다. 나는 또한 이것이 캐싱과 관련이 있다는 이론을 가지고 있지만 이것 역시 확신 할 수 없다. 여기
내 Web.config의에서 수분이 비트는<system.web>
<httpRuntime requestValidationMode="2.0"/>
<globalization culture="en-US" uiCulture="en-US" resourceProviderFactoryType="WebResourceFactory"/>
<compilation debug="true" defaultLanguage="c#" explicit="true" strict="true" targetFramework="4.0">
<assemblies>
</assemblies>
</compilation>
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="Login.aspx" protection="All" slidingExpiration="true"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<sessionState mode="SQLServer" sqlConnectionString="connection" compressionEnabled="true" />
<pages theme="Blue" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
<machineKey validationKey="key" decryptionKey="key" decryption="3DES" validation="SHA1" />
</system.web>
EDIT (내가 몇 가지 중요한 정보를 제거한)입니다 : 내가 경로를 사용자에게 선호 설정로드 밸런서와 SQL 세션 상태를 사용하고 있음을 강조 그들이 시작한 서버로
+1 나는 슬프게도이 문제에 대한 "수정"으로 너무나 자주 보게되는 보호 기능을 비활성화하기보다는 도움을 요청하고 자세한 질문을합니다. – pwdst