2015-05-11 5 views
-1

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

Возможно ли это, или мне нужно использовать поле captcha?

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

поле формы:

<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 = "[email protected]" 
EmailTo = "[email protected]" 
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 = "[email protected]" 
ObjSendMail.Subject = "Website Request" 
ObjSendMail.From = EMailFrom 
ObjSendMail.TextBody = Body 
ObjSendMail.Send 

Set ObjSendMail = Nothing 

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

Вы _sure_ вы хотите создать [honeypot] (http://en.wikipedia.org/wiki/Honeypot_%28computing%29)? – stuartd

+0

Ну, это может быть не правильный термин, но я всегда ссылался на пустые поля, которые скрыты с js, чтобы быть honeypots. Я уверен, что это не самый эффективный способ помешать спаму, но я - разработчик, которому говорят что-то делать, потому что я ИТ-человек. –

+1

Вы должны действительно найти SO сначала, прежде чем публиковать это - это действительно ненужный вопрос. – Paul

ответ

1

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

  • Email Forms: скрытое поле, математический вопрос и искаженным.
  • Страница регистрации: математический вопрос и капчу.
  • Войти (вход): математический вопрос.

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. капчи Я имею в виду CheckCAPTCHA() не те «Я никогда не могу читать» Я использовал числовые значения для Captcha в течение 16 лет и имел только 2 жалобы, когда я пробовал более сложные версии, поэтому многие не могли видеть буквы и цифры очень четко.(ASP = OLD + Пользователи)

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

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

Я часто остановить код на СЭП трафике с Response.End

С Людьми я Ответный с инструкциями и что, возможно, пошло не так «математический вопрос, если вы пропустили его через е много»

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

+0

Я попробую некоторые из них, в настоящее время основной проблемой является контактная форма, которая отправляет электронное письмо. В основном они заполняют поля, а затем отправляют нам электронное письмо. В настоящее время я объявляю переменные, затем обрезая ответы, а затем форматируя их в теле письма, а затем отправляю его smtp. Я определенно надеюсь, что смогу получить что-то, потому что это похоже на 20 писем в день, которые являются спамом, и я знаю, что кто-то будет создавать проблемы с тем, что говорят те, что говорят по электронной почте. –

+0

Вы увидите отличные результаты с помощью приведенного выше кода. Этот код будет 20 лет в октябре 2015 года для одного из моих старых сайтов ASP. BOT SPAM = ZERO, HUMAN SPAM несколько раз в год, и это фильтруется с помощью Geo to IP. –

+0

Сделайте свои формы дезинфицированными данными, которые отправляются в ваш CreateObject («cdo.message»). Например, проверьте электронную почту с помощью функций IsEmailValid (str) и разделите HTML-код, который вам не нужен. Например, я не понимаю, почему кому-то нужно отправить мне HTTP-ссылку, поэтому у меня есть фильтр, который просто останавливает процесс, если обнаружен какой-либо HTML-код. Отправьте свой код, над которым работаете, если вам нужна специфика. –

1

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

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

How to prevent robots from automatically filling up a form?

+0

Ну, я должен был бы проверить это как пустое поле и игнорировать это, и я не знаю, как это сделать с помощью .asp. –

+0

@ChadYikki Тогда проверьте этот вопрос: http://stackoverflow.com/questions/18110633/how-to-check-if-a-post-submitted-field-exists-in-vbscript – Keith

+0

О, так что я могу просто сделать js, который проверяет, заполнено ли поле, и если оно просто игнорирует его? –