【问题标题】:Securing a php contact form保护 php 联系表
【发布时间】:2012-04-20 11:57:50
【问题描述】:

我按照本教程制作了一个简单的 php 联系表: http://www.catswhocode.com/blog/how-to-create-a-built-in-contact-form-for-your-wordpress-theme

最大的问题是这种表单处理不安全,我听说人们可以使用它来发送垃圾邮件和/或入侵我的服务器。

需要哪些基本步骤才能使此表单更安全? ps:如果可以避免的话我不想用re-captcha...

编辑:我需要关于哪些 php 函数用于过滤和确保表单以“正确方式”提交且未被更改和/或用于入侵我的网站或向其发送电子邮件的建议其他人(使用该网站向其他人发送垃圾邮件)。我只需要使用 strip_slashes 吗?还是有更好的方法?

【问题讨论】:

    标签: php wordpress forms contact-form


    【解决方案1】:

    一种方法:如果您不是一个庞大的网站,那么不太可能有人会想出这个/花时间去解决这个问题。

    您可以使用一些棘手的 JS 来处理点击时的标记。因此,您的服务器在后端渲染阶段向页面上的可点击/可聚焦元素发出令牌 ID。将这些记录在数据库或数据文件中。然后,当用户点击并提交时,您可以比较通过 onclick() 函数发送的 id。您还可以应用一些启发式方法来确定点击历史的节奏是否合理。帖子太快了,不是人类,也就是说,即使他们编写了劫持令牌 ID 的脚本并自动提交,您也可以检查点击事件之间的时间是否自动显示。最近注册了推特账号?他们使用被动人体检测,虽然不是 100% 万无一失,但它更慢且更难破解。有人真的想入侵/向您的网站发送垃圾邮件。

    重要步骤 2: 如果您认为这会破坏您的页面,请去掉/URLEncode 奇怪的字符。常见的破坏事物是 " 和 ' 和 :

    另一种方式:http://areyouahuman.com/

    只要您使用加密方法来验证人性,而无需使用糟糕的 CAPTCHA。我的意思是,也不要忽略您的标题。这些是免费的方式。

    关键是要有足够的复杂性来解决 NP-Complete 问题。 http://en.wikipedia.org/wiki/NP-complete

    当 AI 可以自行解决多个复杂的人类问题的那一天到来时,我们将不得不担心请求篡改之外的其他事情。

    http://louisville.academia.edu/RomanYampolskiy/Papers/1467394/AI-Complete_AI-Hard_or_AI-Easy_Classification_of_Problems_in_Artificial

    另一家进行有趣研究的公司是http://www.vouchsafe.com/play-games,他们实际上使用旨在欺骗 RTT 的游戏来训练 RTT 如何更容易由人类解决!

    这是一篇关于 NP-Hard 问题的精彩文章。我可以在这里看到一个巨大的可能性:http://www.i-programmer.info/news/112-theory/3896-classic-nintendo-games-are-np-hard.html

    【讨论】:

    • 嗨,很多好的建议会让答案留待一段时间。 AreYouHuman 太棒了!
    • 我需要说明为什么我让它保持打开状态...我想念更多关于哪些 php 函数用于过滤和确保表单以“正确方式”提交而不是更改的建议/或用于入侵我的网站或向其他人发送电子邮件(使用该网站向其他人发送垃圾邮件)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多