保护网站的数据并打击垃圾邮件和点击机器人

时间:2015-02-23 23:24:34

标签: php angularjs security

我最近开始使用AJAX和AngularJS进行编码,异步GET和POST请求非常酷!我发现了一些我不确定非常重要的问题,但它们似乎确实如此。

我有几乎单独的PHP文件放在名为postRequests的目录中。这些文件接收在我的AJAX脚本中编码的post请求。我唯一的过滤就是检查那样的字段是数字的,字符串等也是如此,以及快速的自定义卫生设施"功能:

function sanitize($string) {
    return mysqli_real_escape_string($dbc, trim($string));
}

这些AJAX调用中的许多都非常简单,例如更新用户个人资料条件的链接或发送评论后数据的请求。但是,这些很容易被点击机器人发送垃圾邮件,用户只需键入内容并垃圾邮件注释按钮(尽管我在每次提交后都清除了textarea)。

  • 这是一个担心,我怎么能打击用户只是提交一个" hiowheihewr" 5秒后评论文字?
  • 我应该用其他东西来保护我的用户输入数据吗?
  • 我考虑过使用HTTP身份验证,但是如何存储密码?在我的AngularJS脚本中的字符串中?这样安全吗?

此外,我的MySQL数据库凭据都存储在名为constants.php的文件中的字符串(未加密)中,每当我建立数据库连接时都会引用该文件。这样安全吗?

我应该如何存储这些管理员密码,这是我应该担心的问题(点击机器人和密码的存储)。有人发现我的PHP文件解析我的POST请求,发送POST请求到我的php文件,或者发现我的文件目录并阅读php或JS脚本有多容易?

1 个答案:

答案 0 :(得分:0)

安全

第一个神奇的词是Prepared Statements。无需mysqli_real_escape_string

使用预准备语句,您可以将输入定义为输入。没有机会,那时会发生mysql注入。

也永远不要相信用户的输入。如果你想要一个电话号码,为什么它还有其他任何东西0-9,-,/,

如果我们谈论shell_executeeval或类似的事情,当然你需要更多的实施。那么永远不要相信用户输入是非常重要的。

垃圾

我总是通过蜜罐法做到这一点。创建一个通过CSS隐藏的链接。类似于:/submit-very-important-data.php

如果调用此页面,您知道它是由机器人调用的,您可以将其存储在SESSION中。如果您的网站不够大,那么没有人会关心特定的机器人,仅适用于您的网页。

如果用户在您的网页上超过30秒(或类似内容),也只接受评论。

如果这一切对您不起作用,您将需要验证码。

总而言之,SESSION将是您的朋友。

<强>身份认证

不知道AngularJS,但如果用户已经过身份验证,为什么不存储在Session