关于sql注入等,我已经阅读了有关安全问题的内容。
我不太熟悉输入字段中的安全漏洞。
我目前有一个接受输入的表单(通过正则表达式验证),例如电子邮件验证将如下:
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脚本。我需要注意哪些安全漏洞?或者通过使用正则表达式验证我可以安全地抵御漏洞?
非常感谢任何信息,
谢谢你, 人
答案 0 :(得分:5)
是。如果您有兴趣在服务器端拥有有效的电子邮件(至少对您的正则表达式有效),您绝对不应该依赖客户端验证通过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{
// CHANGED:
return true;
}
并且通常回答你的问题:我认为在几乎所有使用客户端在PHP代码中发送输入的情况下,你需要一种输入过滤/清理,但你不能真正概括这个任务。这就是为什么没有通常有效的sanitize()函数,因为它总是取决于你如何在服务器端使用输入。
在你的情况下,一种方法可能是通过php再次针对相同的正则表达式验证输入,或者将php的filter_var()与FILTER_VALIDATE_EMAIL过滤器结合使用
<强>更新强>
我刚刚再次找到一篇关于输入验证的非常好的文章,这对我有很大帮助:Input validation