日期:2014-05-17  浏览次数:20987 次

关于 URL 加密和解密的问题!在线等!
首先我自己写了一个加密函数。

    Sub   Encoder()
        加密代码
    End   Sub

    Sub   unEncoder()
        解密代码
    End   Sub

比如传递   http://xxx.xxx.xxx/123.asp? <%=Encoder(id=5)%>

在页面   123.asp   用   Request.QueryString   获取到加密后的字符,然后用   unEncoder   函数对加密后的字符串进行解密。

    但是有这么个问题,如果在   123.asp   中要想让   id   获得其传递的值   5   的话就必须用   execute(unEncoder(Request.QueryString))   才能取的,如果没有   execute   的话,id   就根本的不到传递的   5

    这样恶意用户会不会在   URL   中构建特殊的SQL   语句来调用   execute  

  (我知道你可能会说对   URL   进行注入检测,但万一用户破解了加密函数,把   sql   语句用   encoder   加密传输过来,那注入检测函数不就失效了?)

    请问大家有没有好的办法,最好在   123.asp     中不使用   execute   语句就能获得变量的值!


------解决方案--------------------
1.如果是为了防止SQL注入,不使用SQL拼接的方式,改用其他方式比如RecordSet,存储过程等,就可从根本上避免问题了。
2.如果一定要使用上述URL加密方式的话采用经典的对称加密方式(3DEC,AEC等),并且密钥尽可能长(128位以上)(也不能过长,影响性能),有可能的话再在数据里加上时间戳.那么被解密的可能性几乎为0,可以认为是安全的。但加解密只能在服务器端完成.