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

Bar*_*raa 2 javascript php regex jquery

据我所知,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;
}
Run Code Online (Sandbox Code Playgroud)

我已经测试过在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;
}
Run Code Online (Sandbox Code Playgroud)

我是否还需要使用正则表达式重新验证用户能够以某种形式输入哪些类型的输入?或者在客户端使用正则表达式验证时,在服务器端使用htmlentities就足够了?

任何信息都非常感谢!

谢谢,Al

Edu*_*eda 5

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

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