我是一个c#程序员,最近做的一个asp项目,组长让每个页面中要显示的每个id都加密后显示在页面上,get请求时id也要加密,包括很多页面为了无刷新用handler写的,让hander传到页面上的代码中id也要加密,传入hander中的id也要加密,我觉得很麻烦,但他说是为了别人获取你数据包改变你id什么的,请问有必要这么做吗?
你们组长说的不对的。ID没有必要加密,加密了也没用。举个例子来说吧,有个地址是查看用户信息的http://www.abc.com/userinfo?id=123,这里ID有没有加密根本就没影响。(1)假设没加密,那么你handler里接受到这个参数123,然后你肯定做权限检查,看当前用户是否有权限查看的。就算别人知道id是123,也不能做什么。(2)假设加密了,变成userinfo?id=SADF2DS,那么你接受到参数是SADF2DS,你先还原成123,然后还是要做权限检查。别人知道id是SADF2DS,或者id是123,根本没影响的。因为你服务器端肯定都要检查权限,如果别人有办法绕过了你的权限检查,那你再加密都没用。
他的意思是这样的,说别人有可能获取你的数据包把id改掉从1改到3,比如这是一个修改页面,那么你修改的将不是你要修改的那条数据,完全乱了,是这样的吗
服务器是要对每个页面做权限的,这个我们会做的
@新时代女性: 他从1改到3,这也是你服务器端要做的检查之一啊。你加密了,他一样可以从SADF2DS改成ASSDLK2啊,加密有什么意义呢。
@水牛刀刀: 我怎么知道他从1改到3了呢,我们只是获取id,和更改后的字段然后就到数据库中修改了啊
@水牛刀刀: 不过你说的也是,加密了别人也是可以修改你加密后的东西,但是别人修改加密后的东西还原之后很可能在数据库中找不到对应的数据就不会成功修改,但是不加密的话 他从3修改到1很可能就会造成成功修改了
@新时代女性: 看他有没有权限改,就算他造假把1改成了3,如果他有权限,也让他改。
有没有必要就要看你们网站的性质,是不是安全性有特别高的要求。我也见过网站的ID加过密的,比如http://quote1.fx168.com/ajnew/WHs.aspx,一个外汇数据显示的网站ID都加过密的。
现在做的是进销存项目,为一个销售公司做的,每一个页面都加密,有必要吗?
看需要,如果你是get方式访问的就没有必要了。
看你有没有需要啊,我认为你这个需求不需要加密啊。例如这里就没有加密
http://q.cnblogs.com/q/30026/
30026就是问题的id
http://home.cnblogs.com/u/351025/
351025就是你用户的id
将参数转为url编码编码形式,用的时候解码。。。
这个只能是对传到地址栏的参数转码,而且是转码,不是加密,比如123url编码后还是123,所以对别的id没啥用
对中文还有点用把中文转成地址栏可以识别的编码
这个不是加密是混淆~~就是把原本很通俗易懂的id值搞成奇离古怪的乱码~~客户端接收后在做处理呗~~域管理员做得好.系统不怕被黑.
你的意思是id都做混淆后, 比较安全喽
@一棒子打你很抽象:
HTTP本不安全.
id是什么id?
是每条数据的id