Jquery 在用户输入中使用.serialize()安全吗?
在用户输入中使用Jquery 在用户输入中使用.serialize()安全吗?,jquery,security,serialization,user-input,Jquery,Security,Serialization,User Input,在用户输入中使用.serialize()是否安全,就像下面的ajax一样?我不知道这是否与安全有关 $.ajax({ url: 'process.php', type:'post', data: $("#form").serialize() }) 我在某个地方读到(我想是在这里),在请求的某个点,.serialize()取消序列化数据。在PHP中,取消序列化用户输入是不安全的。我不知道这个函数.serialize()在javascript中是如何工作的,也不知道在用户输
.serialize()
是否安全,就像下面的ajax一样?我不知道这是否与安全有关
$.ajax({
url: 'process.php',
type:'post',
data: $("#form").serialize()
})
我在某个地方读到(我想是在这里),在请求的某个点,.serialize()
取消序列化数据。在PHP中,取消序列化用户输入是不安全的。我不知道这个函数.serialize()
在javascript中是如何工作的,也不知道在用户输入中使用它是否安全。jQueryserialize()
创建URL
编码文本,用于HTTP
请求。在使用serialize()
之前,您始终可以执行表单
验证(默认或自定义)来清理数据。如果你这样做,我看不到任何安全风险
顺便说一句,这里有
serializeArray()
。它生成一个数组并用于处理。您可以安全地序列化任何数据,包括用户输入。序列化只是将内存中已经处理过的内容转换为字符串
然而序列化某些内容的典型原因是在某个时候对其进行反序列化。老实说,我想不出别的理由了。现在,反序列化用户输入是不安全的,因为现在在内存中构建结构时会处理字符串,这种处理很容易导致可利用的漏洞
因此,虽然您的问题是关于序列化的,这一部分很好,但反序列化的另一个必要部分不是。这不是一个本机JavaScript方法,而是一个jQuery方法。因此,添加相关的标记。jQuery
serialize()
创建URL编码的文本,我认为这是安全的。但是,您始终可以在serialize()
之前执行表单验证(默认或自定义)来清理数据。