什么是HTTP'获取'安全最佳实践?
HTTP Get get查询字符串值何时应该被遮挡?
编辑 - 我继承的应用程序具有XOR'加密'的所有查询字符串参数.它还在查询字符串中传递类似AccountID的内容.所以我想知道这些是不是很好的做法以及如果不这样做我会如何纠正这些事情.
编辑 -
我可以用来解决这个问题的一种方法是创建一个基类(这只是伪代码):
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
Run Code Online (Sandbox Code Playgroud)
然后,对于应用程序中的每个页面,我将创建一个具有每个查询字符串值的属性的派生类.
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
Run Code Online (Sandbox Code Playgroud)
然后当我将查询字符串传递给弹出窗口或其他页面我实例化相关类时,将其存储在会话中并在查询字符串上传递唯一ID
Dim qs as new QSPage1("123456")
Session(qs.ID) = qs
Server.Transfer("Page1.aspx?" & qs.IDQueryString())
'or
CreatePopup("Page1.aspx?" & qs.IDQueryString())
Run Code Online (Sandbox Code Playgroud)
在页面中,我通过提取唯一ID并引用存储的会话值来访问值:
AccountID = CType(Session(Request.QueryString("ID")), QSPage1).AccountID()
Run Code Online (Sandbox Code Playgroud)
当然,可以将其放入页面中的函数或类中.
这种方法的一些好处是:
一些缺点是:
任何人都可以想到任何其他好处/缺点或更好的方法(除了重写应用程序)?
编辑 -
感谢所有使用HTTPS和POST的人.不幸的是,我正在寻找与仅使用'GET'有关的答案.(除非你能解释如何在不使用QueryString,Session或Javascript的情况下将数据发布到弹出窗口?)
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |