.asp honeypot для контактной формы

Я попал в трудное место, где меня заставляют использовать ASP classic в некоторых веб-формах. Я не хочу получать спам, но я не знаю, как создать приманку с.asp classic.

Это возможно, или мне нужно будет использовать поле ввода?

Или есть лучший способ предотвратить спам с asp classic?

Поля формы:

<div class="row">
            <div class="col-md-offset-1 col-md-10">
                <form class="form-horizontal" role="form" method="post"      action="submit.asp">
                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-8">
                            <input type="text" class="form-control" name="Name" placeholder="Name" required/>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-8">
                            <input type="email" class="form-control" name="Email" placeholder="Email" required/>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-8">
                            <input type="tel" class="form-control" name="Phone" placeholder="Phone Number">
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-8">
                            <input type="text" class="form-control" name="Subject" placeholder="Subject">
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-8">
                            <textarea name="Info" class="form-control" rows="3" placeholder="Message"></textarea>
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-8">
                            <button class="btn btn-theme btn-lg btn-block"type="submit" value="Send">Send message</button>
                        </div>
                    </div>
</form>

<%

Dim EmailFrom
Dim EmailTo
Dim Subject
Dim Name
Dim Phone
Dim Email
Dim Questions


EmailFrom = "name@company.com"
EmailTo = "chad.bridges@company.com"
Subject = Trim(Request.Form("Subject"))
Name = Trim(Request.Form("Name"))
Phone = Trim(Request.Form("Phone")) 
Email = Trim(Request.Form("Email")) 
Questions = Trim(Request.Form("Info")) 

Dim Body
Body = Body & "Name: " & VbCrLf
Body = Body & Name & VbCrLf
Body = Body & "Subject: " & VbCrLf
Body = Body & Subject & VbCrLf
Body = Body & "Phone: " & VbCrLf
Body = Body & Phone & VbCrLf
Body = Body & "Email: " & VbCrLf
Body = Body & Email & VbCrLf
Body = Body & "Questions: " & VbCrLf
Body = Body & Questions & VbCrLf

Dim ObjSendMail
Set ObjSendMail = CreateObject("CDO.Message")
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="10.000.00.000"
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 00
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False 
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60



ObjSendMail.Configuration.Fields.Update



ObjSendMail.To = "chad.bridges@company.com"
ObjSendMail.Subject = "Website Request"
ObjSendMail.From = EMailFrom
ObjSendMail.TextBody = Body
ObjSendMail.Send

Set ObjSendMail = Nothing

Response.Redirect("Index.html#contact")
%>

2 ответа

Решение

Мне повезло с использованием 3-х типов защиты от спама на каждой странице отправки, даже если вы входите и регистрируетесь. Поскольку ASP является старым, вы можете сохранить его простым и использовать только числовые значения в качестве проверок с одним скрытым полем спам-бота. Держите человеческий подход.Примечание: код - это всего лишь части моего активного сайта, используйте идеи и будьте креативны для своего сайта.

  • Формы электронной почты: скрытое поле, математический вопрос и капча.
  • Страница регистрации: математический вопрос и капча.
  • Логин (вход): математический вопрос.

1. Скрытое поле

<input type="hidden" name="email" value="" />

Может быть, ваш код выглядит так:

Response.Write("<input type=""hidden"" name=""email"" value="""" />" & vbCrLf)

2. Числовой вопрос: для этого требуется простая функция, и она делает очень хорошую работу. Мы хотим рандомизировать числа от 1 до 9, чтобы ни один ответ не был выше 18 и никогда не был равен 0.

str1R = RandomNumber(1,9)
str2R = RandomNumber(1,9)
Session("str3") = (str1 + str2)


Function RandomNumber(LowNumber, HighNumber)
     RANDOMIZE
     RandomNumber = Round((HighNumber - LowNumber + 1) * Rnd + LowNumber)
End Function

HTML может выглядеть так:

<label>Question: What is <%=str1R%> + <%=str2R%> ?</label>
   <div>
     <div>
      <input type="number" name="question" id="question" required />
      <input type="hidden" name="a" id="a" value="1" />

     </div>                
  </div>
        strA = Request.Form("a")
            strQuestion = Left(Request.Form("question"),2)
                If IsNumeric(strQuestion) Then
                'do notta
                Else
                strQuestion = -1
                End If
                If IsNumeric(Session("str3R")) Then
                Session("str3R") = Trim(Session("str3R"))
                Else
                Session("str3R") = 0
                End If
            strMath = ((Session("str3R") - strQuestion) = 0) 'Now we have True or False
If (strMath = True) Then 'Do your ASP Classic Stuff.
        Select Case strA
        Case 1
        'Sends Email
        Case 2
        'Submits Registration
        End Select
    End If

3. CAPTCHA Я имею в виду функцию CheckCAPTCHA(), а не те, "которые я, кажется, никогда не читаю". Я использовал числовые значения для Captcha в течение 16 лет и получил только 2 жалобы, когда я пробовал более сложные версии, которые многие не могли Я не вижу букв и цифр очень четко. (ASP = СТАРЫЙ + Члены)

Google: Dim newBitmap (21,87) Dim vDistort (8) В слоте номер один ваших результатов Google должен быть полный код ASP Classic Numeric Captcha. Это старое, это номера, это работает. Я не думаю, что современные BOTS даже обнаруживают этот старый поток битов. (юмор)

Если вам нужны рабочие примеры, просто спросите, потребуется немного времени, чтобы настроить тестовую страницу, но если вы новичок в формах и нуждаетесь в предотвращении спама, лучше изучить несколько методов. В любой "Ложной" точке всех форм подачи вы должны знать, является ли это Человек или BOT.

Я часто останавливаю код на трафике BOT с помощью Response.End

С Людьми я отвечаю с инструкциями и что могло пойти не так "Математический вопрос, ты пропустил его много раз"

Математический вопрос можно заменить изображением "Что на этой картинке?" используя собаку, яблоко, кошку, что-то с ограниченными возможными ответами.

Я рекомендую использовать общие рекомендации по предотвращению спама в форме. Обычно это делается на стороне клиента (honeypot, captchas и т. Д.), Поэтому использование Classic ASP (технология на стороне сервера) не имеет значения. Кроме того, в Classic ASP нет ничего особенного, что поможет или помешает вашим попыткам заблокировать спам.

С учетом сказанного, вы найдете несколько хороших идей в ответах на этот вопрос:

Как запретить роботам автоматически заполнять форму?

Другие вопросы по тегам