【发布时间】:2015-06-26 20:36:09
【问题描述】:
我了解 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 中以 AGAIN 形式输入的输入类型?还是在服务器端使用 htmlentities 就足够了,而在客户端使用正则表达式验证?
非常感谢任何信息!
谢谢,艾尔
【问题讨论】:
-
是的,用户可以改变你js的行为或者禁用js
-
@madalinivascu 他们只能改变我的 js 的行为,而不是其他人,对吗?然后我会假设这个用户是一个恶意用户,我现在不应该只担心使用 htmlentities 来防止我的网站出现漏洞吗?
-
考虑如果用户在浏览器上禁用 javascript,您的输入将未经验证发送
-
@madalinivascu 好的,谢谢,看来我也会在服务器端进行验证!
标签: javascript php jquery regex