-2

这就是我想要做的:

我有一个 CMS 网站,在我的管理面板中,我可以添加一些用户可以从我的网站购买的软件包。所以在我的Choose.php 页面中,用户可以选择想要购买的包。当然,每个包裹的价格不是由他们设定的,而是由我设定的。

如果他们点击一个包,该页面会将数据发送到另一个页面,如下所示:

$form  = '<form action="/buy.php?'product_name='.$name.'&product_id='.$product_id.'&price='.$ammount.'" method="post" target="_parent" ><input type="submit"     style="background-image:url(images/p.png);height: 55px;width: 118px;" value=""/></form>';

所以用户只点击预定义的包。如果用户是 PHP 甚至脚本方面的专家,他可以轻松更改 url,例如:

product_name=MYPRODUCT&product_id=1&price=1000$

像这样:

product_name=MYPRODUCT&product_id=1&price=10$

这意味着,他们可以用 10 美元而不是 1000 美元购买相同的包裹。

所以我需要将这个为每个包分别生成的 url 加密为如下所示:

$form  = '<form action="/buy.php?MVNnaPgxpQizqwv7YElroi5E" method="post" target="_parent" ><input type="submit"     style="background-image:url(images/p.png);height: 55px;width: 118px;" value=""/></form>';

然后在我的 Buy.php 页面中,这个加密字符串 deycrypts。

但问题在于解密部分,因为当我解密它时,它说它是一个数组(因为我使用 $_GET 来获取 url)。

当我使用数组解密方法时,我的第一页出现错误,它说我正在加密的值是字符串而不是数组。(记住:product_name=MYPRODUCT&product_id=1&price=1000$ 这是一个字符串。)

那么如何在一个页面中加密一个字符串,通过 url (使用 $_POST )发送它,然后在 Buy.php 页面中,使用 $_GET 并将其解密为数组。

对不起,如果它变成一个长帖子。我需要一个加密/解密代码。

4

1 回答 1

2

出于安全原因,我建议您不要通过 GET/POST 参数转发任何敏感数据!即使它们是加密的,攻击者也可能有办法对其进行加密并给您带来很大的损害。

您应该将产品的价格存储在数据库中。当用户选择您转发的产品时。像

$form = '<form action="/buy.php?id=34">'

然后在 buy.php 中,您从数据库中检索价格和其他信息。

我的建议是阅读或至少看看PHP 安全指南

于 2012-05-12T16:00:27.063 回答