我知道 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/