Javascript 检查表单的安全性。

Javascript 检查表单的安全性。,javascript,php,forms,security,spam,Javascript,Php,Forms,Security,Spam,我的帐户因为垃圾邮件被暂停了好几次,我的主机提供商让我检查我的网站安全性。可能是我的表格不够安全。你认为这个表格可以用来发送垃圾邮件吗 这是我的密码: <script type="text/javascript"> $(document).ready(function () { $('#form').ajaxForm({ beforeSubmit: validate }); function validate(formData, jqForm

我的帐户因为垃圾邮件被暂停了好几次,我的主机提供商让我检查我的网站安全性。可能是我的表格不够安全。你认为这个表格可以用来发送垃圾邮件吗

这是我的密码:

<script type="text/javascript">
$(document).ready(function () {
    $('#form').ajaxForm({
        beforeSubmit: validate
    });

    function validate(formData, jqForm, options) {
        var name = $('input[name=name]').fieldValue();
        var email = $('input[name=email]').fieldValue();
        var company = $('input[name=company]').fieldValue();
        var location = $('input[name=location]').fieldValue();
        var phone = $('input[name=phone]').fieldValue();
        var message = $('textarea[name=message]').fieldValue();

        if (!name[0]) {
            alert('Please enter your name');
            return false;
        }
        if (!company[0]) {
            alert('Please enter the name of your organization');
            return false;
        }
        if (!email[0]) {
            alert('Please enter your e-mail address');
            return false;
        }
        if (!phone[0]) {
            alert('Please enter your phone number');
            return false;
        }
        if (!location[0]) {
            alert('Please enter your location');
            return false;
        }
        if (!message[0]) {
            alert('Please enter your message');
            return false;
        }

        else {

        $("#form").fadeOut(1000, function () {
            $(this).html("<img src='note.png' style='position: relative;margin: 0 auto;width: 500px;left: 20px;top: 30px;'/>").fadeIn(2000);
        });

        var message = $('textarea[name=message]').val('');
        var name = $('input[name=name]').val('');
        var email = $('input[name=email]').val('');
        var phone = $('input[name=phone]').val('');
        var company = $('input[name=company]').val('');
        var location = $('input[name=location]').val('');

            } 
    }

});

</script>

$(文档).ready(函数(){
$('形式').ajaxForm({
提交前:验证
});
函数验证(formData、jqForm、选项){
var name=$('input[name=name]')。fieldValue();
var email=$('input[name=email]')。fieldValue();
var company=$('input[name=company]')。fieldValue();
变量位置=$('input[name=location]')。字段值();
var phone=$('input[name=phone]')。fieldValue();
var message=$('textarea[name=message]')。fieldValue();
如果(!名称[0]){
警报(“请输入您的姓名”);
返回false;
}
如果(!公司[0]){
警报(“请输入您的组织名称”);
返回false;
}
如果(!电子邮件[0]){
警报(“请输入您的电子邮件地址”);
返回false;
}
如果(!电话[0]){
警报(“请输入您的电话号码”);
返回false;
}
如果(!位置[0]){
警报(“请输入您的位置”);
返回false;
}
如果(!消息[0]){
警报(“请输入您的消息”);
返回false;
}
否则{
$(“#形式”).fadeOut(1000,函数(){
$(this.html(“”).fadeIn(2000);
});
var message=$('textarea[name=message]')。val(“”);
var name=$('input[name=name]')。val(“”);
var email=$('input[name=email]')。val(“”);
var phone=$('input[name=phone]')。val(“”);
var company=$('input[name=company]')。val(“”);
var location=$('input[name=location]')。val(“”);
} 
}
});
html:


php:


  • 我有一个简单的方法来阻止垃圾邮件发送者,这是100%有效的,至少在我的经验,并避免使用reCAPTCHA和类似的方法。一旦我实施了这种方法,在过去的5年里,我的一个网站的html表单上每天有近100封垃圾邮件,而现在我的垃圾邮件数量为零

  • 另一个选择是我所做的是使用一个隐藏字段并在其上放置时间戳,然后与PHP端的时间戳进行比较,如果时间戳快于15秒(取决于表单的大小),则这是一个机器人

  • 我有一个简单的方法来阻止垃圾邮件发送者,这是100%有效的,至少在我的经验,并避免使用reCAPTCHA和类似的方法。一旦我实施了这种方法,在过去的5年里,我的一个网站的html表单上每天有近100封垃圾邮件,而现在我的垃圾邮件数量为零

  • 另一个选择是我所做的是使用一个隐藏字段并在其上放置时间戳,然后与PHP端的时间戳进行比较,如果时间戳快于15秒(取决于表单的大小),则这是一个机器人


  • 理论上,它可以用来发送垃圾邮件,因为只会检查字段是否有值,只要字段有值,它就不管输入是人还是机器人。您可以通过添加captcha代码()来提高安全性,以验证填写表单的个人是否是人

    理论上,它可以用来发送垃圾邮件,因为只会检查字段是否有值,只要字段有值,它就不管输入是人工还是机器人。您可以通过添加captcha代码()来提高安全性,以验证填写表单的个人是否是人

    你的表单实际上不安全,因为你没有任何验证码之类的东西

    2个选项供您选择:

  • 验证码
  • 验证码->你有东西要填写->你可能知道这一点!:)

  • 蜜罐
  • 蜜罐意味着在表单中添加隐藏字段。如果这些隐藏字段发生了变化,您就知道机器人已经在您的表单中输入了内容。同样,这比验证码好,因为您的用户不必填写验证码

    我更喜欢蜜罐,因为我不喜欢表格,当我失败或者验证码不可读时,我必须填写一次甚至两次验证码


    您的表单实际上不安全,因为您没有任何验证码或其他东西

    2个选项供您选择:

  • 验证码
  • 验证码->你有东西要填写->你可能知道这一点!:)

  • 蜜罐
  • 蜜罐意味着在表单中添加隐藏字段。如果这些隐藏字段发生了变化,您就知道机器人已经在您的表单中输入了内容。同样,这比验证码好,因为您的用户不必填写验证码

    我更喜欢蜜罐,因为我不喜欢表格,当我失败或者验证码不可读时,我必须填写一次甚至两次验证码


    根据上面的建议,我只是准备了一个代码供您使用

    HTML

    <form id="form" method="post" name="form" action="send.php">
    
    <input id="name" type="text" name="name"/>
    
    <input id="company" type="text" name="company"/>
    
    <input id="email" type="text" name="email"/>
    
    <input id="checkbot" type="hidden" name="timestamp" value="" />
    
    <input id="phone" type="text" name="phone"/>
    
    <input id="location" type="text" name="location"/>
    
    <textarea name="message" id="message" rows="10"></textarea>
    
    <input class="submit" type="submit" value="send" name="submit"></input>
    
    </form>
    
    
    
    Javascript

    <script type="text/javascript">
    $(document).ready(function () {
        /*Set current time on the hidden field.*/
        $('#checkbot').val($.now());
    
        $('#form').ajaxForm({
            beforeSubmit: validate
        });
    
        function validate(formData, jqForm, options) {
            var name = $('input[name=name]').fieldValue();
            var email = $('input[name=email]').fieldValue();
            var company = $('input[name=company]').fieldValue();
            var location = $('input[name=location]').fieldValue();
            var phone = $('input[name=phone]').fieldValue();
            var message = $('textarea[name=message]').fieldValue();
    
            if (!name[0]) {
                alert('Please enter your name');
                return false;
            }
            if (!company[0]) {
                alert('Please enter the name of your organization');
                return false;
            }
            if (!email[0]) {
                alert('Please enter your e-mail address');
                return false;
            }
            if (!phone[0]) {
                alert('Please enter your phone number');
                return false;
            }
            if (!location[0]) {
                alert('Please enter your location');
                return false;
            }
            if (!message[0]) {
                alert('Please enter your message');
                return false;
            }
    
            else {
    
            $("#form").fadeOut(1000, function () {
                $(this).html("<img src='note.png' style='position: relative;margin: 0 auto;width: 500px;left: 20px;top: 30px;'/>").fadeIn(2000);
            });
    
            var message = $('textarea[name=message]').val('');
            var name = $('input[name=name]').val('');
            var email = $('input[name=email]').val('');
            var phone = $('input[name=phone]').val('');
            var company = $('input[name=company]').val('');
            var location = $('input[name=location]').val('');
    
                } 
        }
    
    });
    
    </script>
    
    
    $(文档).ready(函数(){
    /*在隐藏字段上设置当前时间*/
    $('#checkbot').val($.now());
    $('形式').ajaxForm({
    提交前:验证
    });
    函数验证(formData、jqForm、选项){
    var name=$('input[name=name]')。fieldValue();
    var email=$('input[name=email]')。fieldValue();
    var company=$('input[name=company]')。fieldValue();
    变量位置=$('input[name=location]')。字段值();
    var phone=$('input[name=phone]')。fieldValue();
    var message=$('textarea[name=message]')。fieldValue();
    如果(!名称[0]){
    警报(“请输入您的姓名”);
    返回false;
    }
    如果(!公司[0]){
    警报(“请输入您的组织名称”);
    
    <form id="form" method="post" name="form" action="send.php">
    
    <input id="name" type="text" name="name"/>
    
    <input id="company" type="text" name="company"/>
    
    <input id="email" type="text" name="email"/>
    
    <input id="checkbot" type="hidden" name="timestamp" value="" />
    
    <input id="phone" type="text" name="phone"/>
    
    <input id="location" type="text" name="location"/>
    
    <textarea name="message" id="message" rows="10"></textarea>
    
    <input class="submit" type="submit" value="send" name="submit"></input>
    
    </form>
    
    <script type="text/javascript">
    $(document).ready(function () {
        /*Set current time on the hidden field.*/
        $('#checkbot').val($.now());
    
        $('#form').ajaxForm({
            beforeSubmit: validate
        });
    
        function validate(formData, jqForm, options) {
            var name = $('input[name=name]').fieldValue();
            var email = $('input[name=email]').fieldValue();
            var company = $('input[name=company]').fieldValue();
            var location = $('input[name=location]').fieldValue();
            var phone = $('input[name=phone]').fieldValue();
            var message = $('textarea[name=message]').fieldValue();
    
            if (!name[0]) {
                alert('Please enter your name');
                return false;
            }
            if (!company[0]) {
                alert('Please enter the name of your organization');
                return false;
            }
            if (!email[0]) {
                alert('Please enter your e-mail address');
                return false;
            }
            if (!phone[0]) {
                alert('Please enter your phone number');
                return false;
            }
            if (!location[0]) {
                alert('Please enter your location');
                return false;
            }
            if (!message[0]) {
                alert('Please enter your message');
                return false;
            }
    
            else {
    
            $("#form").fadeOut(1000, function () {
                $(this).html("<img src='note.png' style='position: relative;margin: 0 auto;width: 500px;left: 20px;top: 30px;'/>").fadeIn(2000);
            });
    
            var message = $('textarea[name=message]').val('');
            var name = $('input[name=name]').val('');
            var email = $('input[name=email]').val('');
            var phone = $('input[name=phone]').val('');
            var company = $('input[name=company]').val('');
            var location = $('input[name=location]').val('');
    
                } 
        }
    
    });
    
    </script>
    
    <?php
            if($_POST){
                    $email = $_POST['email'];
                    $name = $_POST ['name'];
                    $company = $_POST ['company'];
                    $phone = $_POST ['phone'];
                    $location = $_POST ['location'];
                    $message = $_POST ['message'];
                    $checkbot = $_POST['timestamp'];
                    $time_diff = time() - $checkbot;
    
                    //If Time difference is less than 15 sec it's a bot
                    if($time_diff < 15){
                    exit;
                    }
    
    
                    // response hash
                    $ajaxresponse = array('type'=>'', 'message'=>'');
    
                    try {
                            // do some sort of data validations, very simple example below
                            $all_fields = array('name', 'email', 'message');
                            filter_var($email, FILTER_VALIDATE_EMAIL);
    
                            foreach($all_fields as $field){
                                    if(empty($_POST[$field])){
                                            throw new Exception('Required field "'.ucfirst($field).'" missing input.');
                                    }
                            }
    
                            // ok, if field validations are ok
                            // now Send Email, ect.
    
                            // let's assume everything is ok, setup successful response
                            $subject = "Someone has contacted you";
                            //get todays date
                            $todayis = date("l, F j, Y, g:i a") ;
    
                            $message = " $todayis \n
                            Attention: \n\n
                            Please see the message below: \n\n
                            Email Address: $email \n\n
                            Organization: $company \n\n
                            Phone: $phone \n\n
                            Location: $location \n\n
                            Name: $name \n\n
                            Message: $message \n\n
    
                            ";
    
                            $from = "From: $email\r\n";
    
    
                            //put your email address here
                            mail("...@yahoo.com", $subject, $message, $from);
    
                            //prep json response
                            $ajaxresponse['type'] = 'success';
                            $ajaxresponse['message'] = 'Thank You! Will be in touch soon';  
                    } catch(Exception $e){
                            $ajaxresponse['type'] = 'error';
                            $ajaxresponse['message'] = $e->getMessage();
                    }
                    // now we are ready to turn this hash into JSON
                    print json_encode($ajaxresponse);
                    exit;
            }
    ?>