不知何故,当使用 PrototypeForm.serialize()
提交复杂的表单时,我总是有点不确定这是否适用于所有情况。
我担心的可能问题是引号/字符串转义问题,或者可能是提交不寻常的字符代码,任何可能扰乱流程的事情。
所以问题是:
使用 Prototype 从表单中收集所有数据然后通过 AJAX 将其发送到服务器是否安全(在客户端),或者是否有任何浏览器已知在以这种方式发送表单时存在问题 - 或者可能缺乏支持为了它?
不知何故,当使用 PrototypeForm.serialize()
提交复杂的表单时,我总是有点不确定这是否适用于所有情况。
我担心的可能问题是引号/字符串转义问题,或者可能是提交不寻常的字符代码,任何可能扰乱流程的事情。
所以问题是:
使用 Prototype 从表单中收集所有数据然后通过 AJAX 将其发送到服务器是否安全(在客户端),或者是否有任何浏览器已知在以这种方式发送表单时存在问题 - 或者可能缺乏支持为了它?
虽然我知道没有浏览器在内部使用 Javascript 来提交表单,但应该如何提交表单的确切细节都有很好的文档记录。
完全可以用 Javascript 编写完全遵循协议的表单提交代码。另一方面,有经验的编码员可能会错过一些边缘情况——比如禁用的复选框控件。
我不能代表这个prototype
库,因为我从来没有使用过它,但是如果有一个表单没有正确提交,或者一个服务器没有接受提交的表单,那么它应该作为一个错误报告提交。
我不确定你为什么最初被否决,这是一个有效的问题。
不过,我认为真正的答案是安全方面确实发生在后端。序列化整个表单并通过请求发送它是可以的,但您需要验证您在另一端收到的信息。
例如,您不想这样做(或其他语言的等价物):(假设$form
是序列化形式)
foreach ($form as $key => $value) {
$object->$key = $value;
}
save($object);