0

如果我有一个用于访问其他网站的门户。

假设我有一个门户A。我想访问该网站B

如果B需要一些关键信息才能像username. 我想安全地传递这些信息。


所以我制作这样的表格:

 <%--------------------------------------------------------------------------------------%>
    <form id="frm_sal" action="B URL the first page" method="post">
    <input id="hdn_sal_Emp_Num" type="hidden" runat="server" name="hdn_sal_Emp_Num" />
    <input id="hdn_sal_user_name" type="hidden" runat="server" name="hdn_sal_user_name" />
    <input id="hdn_sal_result" type="hidden" runat="server" name="hdn_sal_result" />
    </form>
  <%--------------------------------------------------------------------------------------%>

如果客户点击门户中的链接A,我将提交此表单。

每个网站一份表格。

我的问题是关于如何保护这些数据并防止篡改。

4

3 回答 3

2

有几种方法可以工作。

第一个是以某种方式加密查询字符串,mcrypt 突然想到这是跨平台得到很好的支持,这确实依赖于不破坏你的盐/密码的人,这可以通过经常更改盐来缓解。您遇到的另一个问题是回复攻击,这是当有人将 URL 从一个用户复制粘贴到另一个浏览器时,本质上是复制请求。这可以通过在 URL 中使用日期时间以及不能重复使用的一次性令牌来缓解。

另一种方式是让两台服务器进行通信,当您将用户从一个站点发送到另一个站点时,您通过某种方式的服务器通信协议(SOAP、REST、一些组成)发送数据(带有唯一令牌/guid)然后只是给用户令牌传递。

除非网站是内部网站,否则您应始终避免通过 IP 地址锁定,许多用户拥有多个 IP 地址并使用各种规则沿 IP 传播数据,以便他们可以更改中间请求,甚至一些大型 ISP(AOL 就是其中之一)强制用户通过具有多个端点和不同地址的代理。

最后一个选项是拥有一个共享数据存储,即两个 Web 服务器可以“对话”以查询用户信息的数据库。如果它们在同一个域中,这会更容易,因此您可以设置一个在两个站点上都有效的会话 cookie,如果不是,那么您需要返回到正在传递的唯一令牌。

于 2012-02-26T13:26:52.683 回答
2

在将信息发送给客户端之前将其加密<form>,然后在另一端使用私钥对其进行解密。

这是一个很好的加密示例。 加密和解密字符串

这是我喜欢做的事情。创建一个名为“SharedSession”的类并添加您要共享的属性,这些属性甚至可以是其他类。也添加一个时间戳属性。将类序列化为 Json 字符串 ( Json.net ),对其进行加密并将其推送到表单字段中。

当表单发布到另一端时,将其反序列化为“SharedSession”类。

使用时间戳字段有两个原因:

1)使其看起来像加密数据总是在变化。例如,如果您一遍又一遍地为当前用户发送相同的凭据,则加密字符串永远不会改变,因此时间戳会强制加密字符串每次看起来都不同。

2) 确保发布的数据不会过时或过时。设置大约 1 分钟左右的阈值。如果数据超过 1 分钟,则将其丢弃。

EDIT

另一件事...不要将您的隐藏表单字段称为“SharedSessionData”或黑客会感兴趣的任何内容。将其称为“促销广告数据”之类的东西以摆脱它们。

希望这可以帮助。

于 2012-02-26T13:58:52.353 回答
1

安全地从一个页面到另一个页面传递数据中,用户描述了创建一个自定义类来保存您的敏感数据并将其放置在缓存中。我相信您也可以使用 Session 来完成您正在谈论的内容,这里将讨论:如何将隐藏字段从一个页面传递到另一个页面?

我相信有几种方法,但我认为我的知识不足以告诉您哪种方法最好,但我希望我提供的那些链接能够为您指明正确的方向!

于 2012-02-26T13:29:32.990 回答