【发布时间】:2014-07-09 19:39:57
【问题描述】:
阅读大量教程后,我只想确保安全。
我做了一个联系公式,看起来像这样
<form name="contakt" accept-charset="UTF-8" method="post" action="./mail.php">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="text" name="tel" />
<input type="submit" value="Send" name="submit" />
<textarea name="message"></textarea>
</form>
我通过 jQuery 验证名称和消息是否不为空且不仅包含空格
我通过 jquery 使用以下脚本检查电子邮件
function ismailornot(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
现在,当我的变量通过并且我在我的 mail.php 上时,是否足以在我的脚本顶部检查 $_SERVER['HTTP_REFERER'] 并查看这些变量是否来自我自己的脚本?或者你也可以修改 $_SERVER 变量吗?
或者我是否必须再次检查每个传递的变量以确保安全?
例如:http://www.w3schools.com/php/php_secure_mail.asp 这个脚本是否 1oo% 不会被注射?
感谢您帮助我:)
【问题讨论】:
-
如果您仅使用 Javascript 进行检查,则您什么也没有检查。依靠 Javascript 在用户提交页面之前通知他们错误,而不是为了清理。
-
使 mail() 函数从 SQL 注入中保存...我是唯一一个得到这句话的网络
-
制作一个包含 mail() 函数的 php 文件,以免被标头注入滥用。试图以某种方式缩短它......看起来我失败了。 @miken32 - 我只是使用 JS 来告知用户各种错误 - 只是添加了因为我不确定它对我的问题是否重要。
-
"我通过 jQuery 验证"..."我通过 jquery 检查电子邮件"..."我在我的 mail.php 上检查我的脚本 $ _SERVER['HTTP_REFERER'] 并查看这些变量是否来自我自己的脚本“您仅使用 Javascript 进行检查,并询问您是否应该进行更多检查。我要告诉你的是,你根本没有做任何真正的检查,所以你当然应该做更多的检查。
标签: php email header-injection