2009-11-20 5 views
1

페이지간에 안전하게 데이터를 전달하는 방법을 기대하며 변조를 회피 할 수 있습니다.안전하게 페이지 간 데이터 전달


  • 그것을 해결하는 가장 좋은 방법은, DB 서버에 민감한 데이터를 저장하는 것입니다.
  • 또는 db 서버에서 세션 지속을 사용하십시오.
  • 또는 db 서버에서 데이터를 유지하는 모든 방법.

사실 나는 성능 때문에 이러한 방법을 사용하지 않을 것입니다.

나는 민감한 데이터를 저장하고 싶은 다음은 안전한 방법 인 경우 나도 몰라,하지만 난 그것을 테스트 할 수 있습니다. 싶습니다 (하지만 가능하다면 모르겠어요) tespage1.aspx의 암호화 모드에서 viewstate를 사용하고 testpage2.aspx에서 이것을 검색하십시오.

어떻게 할 수 있습니까? 사전

에서

덕분에

+0

http : // stackoverflow.com/questions/264570/sensitive-data-in-viewstate – Bryan

답변

2

중요한 데이터를 보관할 사용자 지정 클래스를 만듭니다.

class myCustomeClass 
{ 
    int id; 
    string name; 
    currency amount; 

    '... properties to access 

    '... custom methods 

    '... etc. 
} 

당신이 정말로 편집증 경우

는 데이터에 대한 암호화/암호 해독 방법 ... 이제 설정 필드와 속성을 포함한다. 다음으로 encrypt (선택 사항). 당신이 당신을 암호화하는 경우
Cache.Insert("MySensitiveData", myCustomClass, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration); 

MyCustomClass oSensitiveData; 

if (!IsPostBack) 
{ 
    oSensitiveData = (myCustomeClass)Cache["MySensitiveData"]; 
} 

그것 뿐이다 즉, 당신은 당신의 데이터를 Page_Load 이벤트에서 다른 페이지

로 리디렉션 ... 캐시에 물건을 넣어 이제 암호를 해독해야합니다 ...

이렇게하는 방법에는 여러 가지가 있지만이 방법은 상대적으로 작은 데이터 집합으로 저에게 적합합니다. 대규모 데이터 집합을 수행하는 경우 Sql Sever, mySql 등의 데이터베이스를 사용하여 데이터의 '캐시'역할을 할 수 있습니다.

+0

귀하의 게시물에 대한 Mac 감사합니다. 나는 이것을하는 좋은 방법이라고 생각한다. 그래서 해보겠습니다. 예, 그렇습니다. 그래서 나는 암호화 방법을 사용할 것입니다. – StrouMfios

0

그것의 항상 중요한 데이터가 아닌 클라이언트와 서버에 있어야하는 것이 좋습니다. 페이지에 삽입 한 모든 내용은 책임입니다. 모든 서버 측 옵션을 배제 했으므로 ViewState가 암호화로 인해 가장 좋은 선택이되어야합니다. 또한 Page.enableviewstatemac 속성을 사용하여 보안 상태의 viewstate 전송을 수행 할 수도 있습니다.

0

두 가지 문제가 있습니다 ... 하나, ViewState가 안전하지 않습니다. 기본적으로 이것은 단순한 BASE64 인코딩입니다. 이 데이터를 서버에 저장하십시오. 다른 것은 문제를 요구하고 있습니다. 정당한 이유로 새 페이지로 이동할 때 두 가지 ViewState가 손실됩니다. 이것은 한 aspx 페이지에서 다른 aspx 페이지로 데이터를 전달하는 방법이 아닙니다.

또한 성능상의 이유로 ViewState를 세션으로 선택하면 대부분의 시나리오에서 의미가 없습니다. InProc 세션 또는 캐시를 사용하면 ViewState보다 훨씬 효율적입니다.