HTTP 'Get'보안 모범 사례는 무엇입니까?HTTP 'Get'Security
언제 HTTP를 사용해야합니까? querystring 값을 가릴 수 있습니까?
편집 - 내가 상속 한 응용 프로그램은 모두 쿼리 문자열 매개 변수 XOR이 '암호화 됨'입니다. 또한 쿼리 문자열에 AccountID와 같은 것을 전달합니다. 그래서 이것이 훌륭한 관행인지 궁금해하며, 그렇지 않은 경우 어떻게 수정해야하는지 궁금합니다.
편집 -
한 가지 방법 I (이것은 의사 코드 그냥) 기본 클래스를 생성하는 것이 문제를 해결하는 데 사용할 수있는 : 나는 것 응용 프로그램의 각 페이지에 대해 다음
public mustinherit class QSBase
public shared Unique as long = 0
private m_ID as string
public readonly property ID
get
return m_ID
end get
end property
public sub new()
m_ID = Unique 'somehow get a unique value for this querystring
Unique += 1
end sub
public function IDQueryString() as string
return "ID=" & m_ID
end function
end class
각 쿼리 문자열 값에 대한 속성을 사용하여 파생 클래스를 만듭니다. 나는 팝업 또는 다른 페이지로 I 인스턴스 관련 클래스를 쿼리 문자열을 통과 할 때
public class QSPage1
inherits QSBase
private m_AccountID as string
public readonly property AccountID as string
get
return m_AccountID
end get
end property
public sub new(byval _AccountID as string)
m_AccountID = _AccountID
end sub
end class
그런 다음 세션에 저장하고 페이지 I 내에서 쿼리 문자열
Dim qs as new QSPage1("123456")
Session(qs.ID) = qs
Server.Transfer("Page1.aspx?" & qs.IDQueryString())
'or
CreatePopup("Page1.aspx?" & qs.IDQueryString())
에 고유 ID를 전달 고유 한 ID를 가져 와서 저장된 세션 값을 참조하여 값에 액세스하십시오.
AccountID = CType(Session(Request.QueryString("ID")), QSPage1).AccountID()
물론 페이지의 함수 또는 클래스에 넣을 수 있습니다. 이 방법의
일부 이점은 다음과 같습니다 쿼리 문자열의
- 없음 관련이없는 ID를 제외하고 표시되지 않습니다.
- 이미 기존 코드에서 구현하는 것이 매우 쉽습니다.
단점 중 일부은 다음과 같습니다
- 가 긴 세션이 축적 될 수있는 고유 ID가 해당 세션
누구든지 애플리케이션을 다시 작성하는 것 외에 다른 이점/단점 또는 더 나은 방법을 생각할 수 있습니까?
편집 - HTTPS 및 POST를 사용하는 말을 모든 사람에게
감사합니다. 불행히도, 나는 'GET'만을 사용하여 해답을 찾고 있습니다. (QueryString, Session 또는 Javascript를 사용하지 않고 팝업에 데이터를 게시하는 방법을 설명 할 수 없다면)
호기심에서, 어떤 종류의 정보가 가려져 야한다고 생각합니까? –
이 질문은 매우 일반적인 것 같습니다. 무엇을 확보하고 싶습니까? 왜 당신은 HTTP GET을 특별히 요구합니까? –
남자 ... 왜이 질문에 투표하는 사람이 있습니까? 나는 그것에 아무 문제도 보지 않는다! – razenha