单选按钮和复选框.防止更改值属性


Radio buttons and checkboxes. Prevent changing of the value attribute

因此,您有一个复选框或单选按钮,其中包含要发送到数据库的预定义值:

<input name="statement" type="radio" value="AWENSOME">

但是,有恶意的人或脚本可以很容易地通过基本的"浏览器页面检查"来更改复选框/单选按钮的值,然后将其他值发送到数据库。例如:

<input name="statement" type="radio" value="NOT SO AWENSOME! STUPID">

怎么能阻止那些家伙?非常感谢。

不,不能,最好的方法是在数据库中收集所有允许的输入值,并每次在服务器上检查这些值。在复选框、选择、单选等输入的情况下,这很容易,因为你确切地知道值可以是什么。在文本输入的情况中,你必须使用regex和sanitalization。

如果您使用php:,模型中的类似内容可能会有所帮助

if ($data['statement'] == 'AWENSOME' || $data['statement'] == 'FOOBAR' )
{
   $statement = $data['statement'];
} else
{
   // abort the app or return an error to the user
}

你不能完全阻止用户在浏览器中修改html脚本,但你可以防止不必要的数据进入你的数据库。。

为了防止这种情况,您应该在服务器端的php脚本中有一个验证器。

有很多方法可以防止无效数据进入数据库:

  1. 在数据库中列出有效值,一旦用户选择该值,服务器将检查复选框或单选框中的值是否存在
  2. 使radio/checkbox的值为加密的,或者说有一些独特的格式,如zkdie23doo44s,可以由您的服务器识别
  3. 定期检查html复选框,并根据服务器中的原始html脚本重新加载值

希望这能帮你想出一两个主意。。

你不能这样做,你必须在服务器端再次检查,对于像复选框这样的框,你知道值,对于文本框,你可以使用正则表达式