防止使用JavaScript进行表单注入


Prevent form injection with JavaScript?

我有一个页面,用户必须使用HTML5 Canvas和JavaScript创建自定义配置文件图片。画布的base64图像数据以一种形式存储在一个隐藏的输入字段元素中,他们在其中输入其余的用户信息。我只想让网站上的人用我的JavaScript/Canvas设计器制作他们的个人资料图片,但用户可以进入Chrome控制台,或使用地址栏或用户脚本将隐藏输入字段的内容设置为他们选择的base-64图像数据(不是用我的画布制作的)。

我如何阻止人们这样做?我在想可能是某种使用AJAX将数据POST到设置$_SESSION数据的PHP文件中的方法,但我想不出有什么方法可以防止用户注入javascript来更改参数。

如果不熟练地了解您的环境,我将进行猜测。

我假设您使用的是某种库,它允许用户在画布上绘制(有效地使其成为mspaint)。假设这是真的,您可以记录图像制作过程中的每个步骤,并将其发送到服务器。这现在允许三件事:

  1. 用户最终得到了他们绘制的图像
  2. 服务器知道它是合法的,因为它一直在跟踪
  3. 因为如果项目符号为2,则不再需要保存画布结果

不要浪费时间试图弄清楚如何依靠客户端来防止这种不必要的用户行为。如果有人想在客户身上做这件事,他们会想办法做到的,而且可能不会花很长时间。如果要防止这种用户行为,请在服务器端执行。这可能很容易,也可能不容易,但至少是可能的。这根本不可能在客户端实现。