javascript - 我是否应该重新验证已在 javascript 中验证的 php 中的表单输入

标签 javascript php jquery regex

我知道 JavaScript 验证仅用于客户端,并防止服务器端出现漏洞,我需要验证 php 中输入的安全性。

我已经验证了用户可以从客户端(使用 JavaScript)在表单中输入哪些类型的输入,如下例所示:

if(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(document.getElementById(idName).value)){
    return true;
}else{
    return false;
}

我已经在 php 中的表单输入上进行了以下测试:

$fname = $lname = $saddress = $city = $state = $zip = $email = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $fname = test_input($_POST["fname"]);
    $lname = test_input($_POST["lname"]);
    $saddress = test_input($_POST["saddress"]);
    $city = test_input($_POST["city"]);
    $state = test_input($_POST["state"]);
    $zip = test_input($_POST["zip"]);
    $email = test_input($_POST["email"]);
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

我是否还需要使用正则表达式重新验证用户能够在 php 中再次以表单输入什么类型的输入?或者在服务器端使用 htmlentities 就足够了,而在客户端使用正则表达式验证?

非常感谢任何信息!

谢谢,艾尔

最佳答案

始终验证服务器端的所有内容。由于每个人都可以使用 Findbugs 或 Chrome 工具等工具通过浏览器更改您的 javascript 客户端代码,因此仅在 Javascript 中进行验证并不安全。

您在客户端验证的只是为了给用户提供更好的体验。

关于javascript - 我是否应该重新验证已在 javascript 中验证的 php 中的表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742463/

相关文章:

javascript - 防止事件助手消失

javascript - 试图将背景图像放在颜色之上

javascript - 滚动到 ckeditor 的底部

javascript - Ajax卡在beforeSend阶段,不向PHP发送数据

jQuery ajax 仅加载某个元素的文本

javascript - 随时间重复的函数

javascript - 区间验证

php - 如何在html选项标签中添加php?

php - 语法错误或访问冲突 1064 使用 ON DUPLICATE KEY UPDATE 和 PDO

php - Doxygen 忽略@method