Forms 阻止用户更改选项";“价值”;在下拉列表中

Forms 阻止用户更改选项";“价值”;在下拉列表中,forms,validation,Forms,Validation,这个问题可能听起来很琐碎,但这里是 我有一个带有下拉菜单的提交表单,如下所示: <li><label for="stateprovince">State/Province:</label> <select name="stateprovince" id="stateprovince"> <option selected="selected" value=""></option> <option value="north

这个问题可能听起来很琐碎,但这里是

我有一个带有下拉菜单的提交表单,如下所示:

<li><label for="stateprovince">State/Province:</label>
<select name="stateprovince" id="stateprovince">
<option selected="selected" value=""></option>
<option value="northland">Northland</option>
<option value="auckland">Auckland</option>
<option value="waikato">Waikato</option>
<option value="bayofplenty">Bay of Plenty</option>
<option value="eastcoast">East Coast</option>
<option value="hawkesbay">Hawkes Bay</option>
<option value="taranaki">Taranaki</option>
<option value="kingcountry">King Country</option>
<option value="wanganui">Wanganui</option>
<option value="manawatu">Manawatu</option>
<option value="wairarapa">Wairarapa</option>
<option value="wellington">Wellington</option>
<option value="nelsonbays">Nelson Bays</option>
<option value="marlborough">Marlborough</option>
<option value="buller">Buller</option>
<option value="westland">Westland</option>
<option value="northcanterbury">North Canterbury</option>
<option value="canterbury">Canterbury</option>
<option value="midcanterbury">Mid Canterbury</option>
<option value="southcanterbury">South Canterbury</option>
<option value="northotago">North Otago</option>
<option value="otago">Otago</option>
<option value="southland">Southland</option>
<option value="chathamisl">Chatham Islands</option>
</select><br></li>
  • 州/省: 北国 奥克兰 怀卡托 丰盛湾 东海岸 霍克斯湾 塔拉纳基 国王国 万加努伊 马纳瓦图 怀拉拉帕 惠灵顿 纳尔逊海湾酒店 马尔伯勒 布勒 韦斯特兰 北坎特伯雷 坎特伯雷 坎特伯雷中部 南坎特伯雷 北奥塔哥 奥塔哥 南国 查塔姆群岛
  • 这是我上周提交的一个作业/项目的一部分,我刚刚发现我现在要描述的这个特别大的项目

    我让用户从上面的下拉菜单中选择一个选项,一旦他们选择一个项目并提交表单,所选的值就会被插入到数据库中。问题在于用户可以在下拉菜单中修改标签中“值”字段的值。这个“坏”值被插入到数据库中,这不是我想要的。例如,用户可以通过检查元素和编辑源(或者用户告诉我的那样),将值“otago”更改为类似“foobar”的值

    将值放入php数组中,对照数组中的值检查所选“值”,并在不匹配时触发错误消息,这是解决问题的好方法吗?这是我第一次有人为我发现这一点,在获得正确的数据插入到数据库方面,我想得到这个固定


    提前谢谢

    您所看到的是所谓的验证,或表单验证或用户输入验证等。这对于安全性来说是绝对必要的。即使是非常大的网站/机构也因为做得不正确而出现了严重的问题。他们仍然存在这些问题,尽管他们都应该更清楚

    您根据已知可能值列表检查这些值的想法很好。在测试“好”答案(“白名单”)与筛选坏值(“黑名单”)之间进行选择时,寻找好值更可靠。很难想到所有可能提交的坏值


    如果可能的正确答案列表有限且很小,那么检查数组是一个很好的解决方案,因为它使用精确的值。当可能的值不是一个小的有限集时,比如当要求用户输入他们的名字时,它变得更加棘手。在这些情况下,您通常希望使用正则表达式或其他形式的模式匹配来测试符合可能的正确答案(即,只有字母和空格)的答案,并在将值插入数据库时使用“参数化查询”,以便正确转义这些值。这里有一个有趣的链接,我通过谷歌快速搜索找到:

    谢谢你的回答,它基本上重复了我同学告诉我的内容,但还是很高兴看到另一种观点。因此,您还可以将这些值存储在数据库的某个表中,并执行查询,以测试下拉菜单中选定的值是否与数据库表中包含的值匹配?