[Yanel-dev] Spam block for Contact Resource

Jonathan Addison jon at wyona.com
Fri Nov 16 11:09:11 CET 2007


Hi Simon,

I've attached a patch which adds spam blocking to the Contact Resource.  =

It uses a method similar to this site: =

http://www.utahsysadmin.com/2007/05/16/stripped-down-jsspamblock/.

Basically it hides/populates fields with javascript, which the spam bots =

don't use at the moment.

You can test it locally by changing the contact-form.rtd in the Yanel =

website realm to use your email address, and then try to submit the =

Contact form with javascript on or off.  It should fail if javascript is =

off and an incorrect value is typed into the validation box.

Let me know if there are any questions.

Jonathan
-------------- next part --------------
Index: src/contributions/resources/contact-form/src/java/org/wyona/yanel/im=
pl/resources/ContactResource.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- src/contributions/resources/contact-form/src/java/org/wyona/yanel/impl/=
resources/ContactResource.java	(revision 28956)
+++ src/contributions/resources/contact-form/src/java/org/wyona/yanel/impl/=
resources/ContactResource.java	(working copy)
@@ -153,16 +153,18 @@
             while(enumeration.hasMoreElements()){
                 if(enumeration.nextElement().toString().equals("email")) =

                     submit =3D true;
-            }
+            }   =

             if(submit) {
-                sendMail(transformer);
-                if (request.getParameter("company") !=3D null) transformer=
.setParameter("company", request.getParameter("company"));
-                if (request.getParameter("firstName") !=3D null) transform=
er.setParameter("firstName", request.getParameter("firstName"));
-                if (request.getParameter("lastName") !=3D null) transforme=
r.setParameter("lastName", request.getParameter("lastName"));
-                if (request.getParameter("email") !=3D null) transformer.s=
etParameter("email", request.getParameter("email"));
-                if (request.getParameter("address") !=3D null) transformer=
.setParameter("address", request.getParameter("address"));
-                if (request.getParameter("zipCity") !=3D null) transformer=
.setParameter("zipCity", request.getParameter("zipCity"));
-                if (request.getParameter("message") !=3D null) transformer=
.setParameter("message", request.getParameter("message"));
+                if (request.getParameter("spamblock_hidden").equals("TRyAg=
41n") && request.getParameter("spamblock_input").equals("8989890")) {    =

+                    sendMail(transformer);
+                    if (request.getParameter("company") !=3D null) transfo=
rmer.setParameter("company", request.getParameter("company"));
+                    if (request.getParameter("firstName") !=3D null) trans=
former.setParameter("firstName", request.getParameter("firstName"));
+                    if (request.getParameter("lastName") !=3D null) transf=
ormer.setParameter("lastName", request.getParameter("lastName"));
+                    if (request.getParameter("email") !=3D null) transform=
er.setParameter("email", request.getParameter("email"));
+                    if (request.getParameter("address") !=3D null) transfo=
rmer.setParameter("address", request.getParameter("address"));
+                    if (request.getParameter("zipCity") !=3D null) transfo=
rmer.setParameter("zipCity", request.getParameter("zipCity"));
+                    if (request.getParameter("message") !=3D null) transfo=
rmer.setParameter("message", request.getParameter("message"));
+                }
             }
             =

             // create xslt transformer for global layout
Index: src/contributions/resources/contact-form/xslt/contact-form.xsl
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- src/contributions/resources/contact-form/xslt/contact-form.xsl	(revisio=
n 28956)
+++ src/contributions/resources/contact-form/xslt/contact-form.xsl	(working=
 copy)
@@ -91,14 +91,28 @@
         </xsl:for-each>
         =

         <tr>
-          <td colspan=3D"2">&#160;
+          <td>&#160;</td>
+          <td>
+            <div id=3D"spamblock_hide">
+            <input name=3D"spamblock_hidden" type=3D"hidden" value=3D"TRyA=
g41n" />
+            <p>For spam detection purposes, please copy<br/> the number <s=
trong>8989890</strong> to the field below:</p>
+            <input name=3D"spamblock_input" id=3D"spamblock_input" tabinde=
x=3D"3" value=3D"" />
+            </div>
           </td>
+          <script type=3D"text/javascript">
+            document.getElementById("spamblock_input").value =3D 8989890;
+            document.getElementById("spamblock_hide").style.display =3D "n=
one";
+          </script>
+        </tr>
+        <tr>
+          <td>&#160;</td>
           <td>
             <input type=3D"submit" name=3D"submit" value=3D"i18n:attr key=
=3Dsend"/>
           </td>
         </tr>
         <tr>
-          <td align=3D"right" valign=3D"top" class=3D"contentfield" colspa=
n=3D"3"><br/><i18n:message key=3D"requiredFields"/></td>
+          <td>&#160;</td>
+          <td valign=3D"top" class=3D"contentfield" colspan=3D"3"><br/><i1=
8n:message key=3D"requiredFields"/></td>
         </tr>
       </table>
     </form>


More information about the Yanel-development mailing list