4

我正在编写一个网站应用程序,以允许用户使用复选框为他们的比萨饼选择配料。每个复选框都为其 value 属性分配了一个名称,例如:

<li name="meatItem" id="m1"><input type="checkbox" name="checkItem" id="Pep" value="1.5">Pepperoni</li>

我将编写一个循环遍历所有复选框的 php 脚本,并通过添加每个复选框中的所有值来确定比萨饼的价格。但我担心 HTML 被黑客攻击以更改值属性,这显然会导致我的 php 定价脚本不准确。这是一个有效的担忧吗?有没有办法避免这种情况?

4

2 回答 2

6

与其将价格值直接放在复选框 HTML 中,不如将复选框值改为“代码”,映射到他们想要的任何顶部。比如 1=cheese、2=peppers 等。然后在后端,有代码=>price 映射,并根据给出的代码计算价格 + PHP 中需要哪些配料。否则,正如您所说,有人很有可能破解这些值。

于 2013-09-18T22:13:04.060 回答
5

简而言之,永远不要相信用户可以输入的任何内容。

是的,有人可以很容易地更改这些值,实际上他们可以使用他们想要的任何值等将自己的表单提交到您的页面。

您最好获取提交的数据(即 POST/GET)并首先检查名称和数据是否应该是(即strlen()A-z0-9 的正则表达式,可能是包含所有有效数据的数组等),然后检查一次您很高兴提交的所有数据都是有效的,然后根据表单名称从数据库/其他来源获取您的价格。

只需将它们与表格一起发布,就会有人将价格更改为 0.00 并免费获得。因此,当您无论如何都必须从自己的来源(mysql等)检查价格时,在表格中发布价格是没有意义的。

于 2013-09-18T22:16:49.673 回答