这是我第一次在asp.net项目中的两个页面之间传递变量.它有效,但我想知道这是否是一个好方法呢?它安全吗?有没有更好的办法?我问的原因是我已经学会了从不在sql中使用连接,而是使用参数(我从现在开始总是这样做).在这种情况下是否存在类似的风险?
在网页1中:
protected void Button1_Click(object sender, EventArgs e)
{
string email = txtEmail.Text;
string date = txtDate.Text;
string time = txtTime.Text;
string name = txtName.Text;
string url = "~/change.aspx?newemail="+mail+"&newdate="+date+"&newtime="+time+"&newname="+name+"";
Response.Redirect(url);
}
Run Code Online (Sandbox Code Playgroud)
在网页2中:
protected void Page_Load(object sender, EventArgs e)
{
String email = Request.QueryString["newemail"];
String date = Request.QueryString["newdate"];
String time = Request.QueryString["newtime"];
String name = Request.QueryString["newname];
TextBox1.Text = email;
TextBox2.Text = date;
TextBox3.Text = time;
TextBox4.Text = name;
}
Run Code Online (Sandbox Code Playgroud)
如果这是一个好方法吗?
并不是的.您需要对值进行url编码,因为如果它们包含特殊字符,则接收页面将无法正确解析它们:
string url = "~/change.aspx?" +
"newemail=" + HttpUtility.UrlEncode(mail) +
"&newdate=" + HttpUtility.UrlEncode(date) +
"&newtime=" + HttpUtility.UrlEncode(time) +
"&newname=" + HttpUtility.UrlEncode(name);
Run Code Online (Sandbox Code Playgroud)
它安全吗?
一点都不.任何人都可以向您的目标页面发送请求,其中包含他认为对他有益的任何值.
有没有更好的办法?
这取决于您的具体要求以及您传输的信息是否敏感.如果它是敏感信息,那么您可以考虑将值存储在服务器上,而不是将它们作为查询字符串参数传递.例如,您可以使用ASP.NET会话来实现此目的.
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |