我正在编写一个网站应用程序,允许用户使用复选框选择披萨的浇头。每个复选框都为其value属性指定了一个名称,例如:
<li name="meatItem" id="m1"><input type="checkbox" name="checkItem" id="Pep" value="1.5">Pepperoni</li>
我将编写一个php脚本,循环遍历所有复选框,并通过添加每个复选框中的所有值来确定披萨的价格。但是我担心HTML被黑客攻击会改变值属性,这显然会导致我的php定价脚本不准确。这是一个有效的问题吗?有没有办法避免这种情况?
答案 0 :(得分:6)
而不是直接在复选框HTML中使用价格值,您应该将复选框值设为“代码”,而是映射到他们想要的任何顶部。例如1 =奶酪,2 =辣椒等。然后在后端,使用代码=&gt;价格映射,并根据给出的代码计算价格+ PHP中需要的配料。或者,正如你所说,有人可能会破解这些价值观。
答案 1 :(得分:5)
简单地说,永远不要相信用户可以输入的任何东西。
是的,有人可以很容易地更改这些值,实际上他们可以使用他们想要的任何值将他们自己的表单提交到您的页面。
你最好采取提交的数据(即POST / GET)并首先检查名称和数据应该是什么(即strlen()
,正则表达式为A-z0-9,可能是一个包含所有数据的数组有效数据等)然后一旦您满意,所有提交的数据都是有效的,然后根据表单名称从数据库/其他来源获取您的价格。
只需使用表单发布,有人会将价格更改为0.00并免费获取。因此,当你必须从你自己的来源检查它们时(mysql等),它在表单中是毫无意义的发布价格。