加密嵌入在模板字段中的查询字符串?

时间:2012-10-23 15:46:12

标签: c# asp.net gridview encryption query-string

我尝试通过以下类加密我的查询字符串:

Encrypt Query String .

问题是:

我的链接位于gridview,我不知道如何以正确的方式通过eval表达式使用加密方法。

这是我尝试过的:

我的.aspx

 <ItemTemplate>
 <a id="btnShowPopup6" runat="server" class="thickbox" href='<%#"PageDetail.aspx?QueryStringModule.Encrypt(code="+Eval("t_code")+"&serial="+Eval("t_Serial")+"&year="+Eval("t_Year")+"&AR=1"+"&TBiframe=true&height=600&width=950)"%>'>
  <asp:Image ID="Image43" runat="server" ToolTip="confirm" ImageUrl="Images/ok-blue.png"
   Width="20" Height="20" />
 </ItemTemplate>

2 个答案:

答案 0 :(得分:1)

创建一个代码隐藏方法并传递您想要加密的数据.. 返回一个链接

调用ItemTemplate中的方法

方法可能是这样的......

protected string getCode(string t_code, string t_Serial, string t_Year)
    {
        return "<a href=PageDetail.aspx?" + QueryStringModule.Encrypt("code=" + t_code + "&serial=" + t_Serial + "&year=" + t_Year + "&AR=1" + "&TBiframe=true&height=600&width=950") + ">code</a>";
    }

现在使用它如下

<asp:TemplateField HeaderText="YOUR LINK NAME">
                <ItemTemplate>
                <%# getCode(Eval("t_code").ToString(), Eval("t_Serial").ToString(), Eval("t_Year").ToString()) %>
                </ItemTemplate>
                </asp:TemplateField>

答案 1 :(得分:1)

将你的href =更改为以下内容,它应该有效。

<%#"PageDetail.aspx" + QueryStringModule.Encrypt("code="+Eval("t_code")+"&serial="+Eval("t_Serial")+"&year="+Eval("t_Year")+"&AR=1"+"&TBiframe=true&height=600&width=950")%>

顺便说一下,除了此查询字符串模块之外,不要重复使用加密密钥。不幸的是,httpmodule所做的是创建一个“加密oracle”,你可以提供任何明文,它将返回一个用你的密钥加密的有效密文。例如,如果你去pagedetail.aspx?myname = moe,它会为我加密myname = moe并给我一个用你的密钥加密的值。如果您在代码的其他部分使用此值进行某种类型的验证或信息隐藏,我可以随意生成加密字符串。