关于 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,可以认为是安全的。但加解密只能在服务器端完成.