不验证服务器上的简单电子邮件表单会带来什么后果.
请记住:
我想使用的PHP代码是这样的:
<?php
$post_data = filter_input_array( INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS );
$full_name = $post_data["full_name"];
$email_address = $post_data["email_address"];
$gender = $post_data["gender"];
$message = $post_data["message"];
$formcontent = "Full Name: $full_name \nEmail Address: $email_address \nGender: $gender \nMessage: $message \n";
$formcontent = wordwrap($formcontent, 70, "\n", true);
$recipient = "myemail@address.com"; $subject = "Contact Form"; $mailheader = "From: $email_address \r\n";
mail($recipient, $subject, $formcontent, $mailheader);
echo 'Thank You! - <a href="#"> Return Home</a>';
?>
Run Code Online (Sandbox Code Playgroud)
一个简单的验证码会解决安全问题吗?
更新:
我真的想回答几个问题:如果我不担心发送无效数据,我可以做的绝对最低限度是什么来提高安全性.基本上避免灾难.
我应该提一下,这个代码是在表单生成器中生成的,我想避免我的用户受到攻击.可以通过添加Captcha对垃圾邮件进行排序.
更新:最糟糕的情况是什么?
更新:真的很感谢所有的答案!
我打算做的几件事:
如Alex所述,添加:filter_var("$ post_data ['email_address']",FILTER_VALIDATE_EMAIL);
添加简单的验证码
如果我确实添加了简单的服务器端验证,我应该验证什么?即使我正在验证它,用户仍然无法发送无效数据? …
使用Bower vs Git子模块有什么好处?
由于Bower只是在本地克隆了repo,并为您提供了可执行文件的链接,我个人发现使用子模块更简单,并且同样可以完成工作.
我在这里缺少什么,是否有一个很好的理由将Bower引入您的堆栈和存储库?
我用PHP创建时间戳time();
我有$current_time和$purchase_time.如何确保purchase_time小于当前时间的24小时?
理论上,这个简单的脚本应该检查表单是否有错误,然后打印它找到的任何错误.
formValidate函数接受一个表单数组,表单中的每个字段都有一个经过验证的值.该字段还有一个错误键,其值为空数组.我试图将我发现的任何错误追加到特定字段的错误数组中.然后,当我完成后,我返回表单数组.
我稍后打印出字段的所有错误.不幸的是,错误从未出现过.
我已经在这个问题上突破了好几个小时了,我不知道为什么我的生活会弄清楚为什么我脚本中的表单错误没有出现.
任何帮助将不胜感激!
# get value from array
function array_get(array $array, $key, $default = null)
{
return (array_key_exists($key, $array)) ? $array[$key] : $default;
}
# get string value from array
function array_get_string(array $array, $key, $default = '', $trim = true)
{
$val = array_get($array, $key);
if (is_string($val)) {
return ($trim) ? trim($val) : $val;
}
return $default;
}
function validateForm($form)
{
// validateField each field
foreach ($form as $field)
{
foreach ($field['validation'] as $validate)
{
switch($validate)
{
case …Run Code Online (Sandbox Code Playgroud)