gpt4 book ai didi

php - jQuery - 使用 Eval() 进行表单提交一般调查问卷

转载 作者:行者123 更新时间:2023-12-01 05:57:16 25 4
gpt4 key购买 nike

我使用 jquery 的 $.ajax() AP 将数据发送到服务器进行验证。(并非所有表单,但那些确实需要更多服务器端验证的表单)

因此,我的服务器端脚本接收 POSTED 数据,并执行验证魔法。如果所有数据都经过验证,那么我只需返回数字“1”,否则返回零“0”

表单.html

<form class="systemform" id="testform">
<input type="text" name="emailaddy" id="emailaddy" value="me@me.com" />
<input type="submit" name="button" id="272746866" value="Submit Form">
</form>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

$("form.systemform").submit(function(){
var formid = $(this).attr("id");
var allFormValues = $(this).serialize();
$.ajax({ url:"validate.php",
data:allFormValues+"&formId="+formid,
success:function(response){
if(response == "0"){ alert("invalid data"); }
if(response == "1"){ alert("data validated"); }

}
});return false;

});
</script>
<小时/>
<?php
// validate.php

/* validate the serialized data here */


die("1"); // if everything checks out
?>

我非常有兴趣听到关于这种验证表单数据的方法的其他意见/策略。好处是无需刷新浏览器。
但现在我很好奇验证后最好执行什么。

目前,上面的代码并没有做太多事情。因此,在 $.ajax API 的 success 部分中,我有 eval() 方法等待从服务器端脚本获取指示。

success:function(response){
eval(response); return false;
}

eval() 通过传回 js 函数或命令,为服务器提供了更大的灵 active 。

2 die() 示例:

<?php
//validation.php

die('alert("your email is incorrect");');
die('$("selector").html("fix this part");');
?>

我知道有人会想说一些关于 eval() 的事情,并且它是不安全的。我想听听。我想知道为什么。 (这对我们所有人都有好处)但请详细说明一些好的例子。

最佳答案

eval 在任何时候都可能不安全,因为它可以执行任何 JS,并且很容易对用户进行攻击。想象一下,黑客有能力执行任何脚本,并且可以向用户发送恶意 URL 或攻击。如果他们使用特定的输入值,他们可以让您的服务器发出以下内容:

die('window.location.href = "http://evilsite.com"');

此外,客户端和服务器实现之间不应该存在任何耦合。可能依赖于某些元素名称,但不依赖于代码。当您尝试集成 php 代码和 JavaScript 时,您实际上会失去灵 active 。如果 eval 确实更灵活,则可能表明您可能需要重新考虑如何在客户端处理事情。

至于进行服务器端验证与客户端验证,您始终需要分别进行。规避您可能拥有的任何类型的客户端安全性是完全微不足道的。拥有它的唯一原因是为了用户方便(通过避免页面重新加载、突出显示受影响的字段等),但您还需要进行服务器端验证以保护自己。

我认为使用ajax进行验证的唯一原因是您是否需要检查数据库中的某些值(例如:查看用户名是否已被使用)。我不会使用 ajax 来验证诸如必填字段之类的内容。

关于php - jQuery - 使用 Eval() 进行表单提交一般调查问卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com