2015-02-23 26 views
1

我最近开始使用AJAX和AngularJS进行编码,并且异步GET和POST请求对于PHP来说非常酷!我遇到了一些我不太确定的问题,但他们的确看起来很重要。保护网站的数据并打击垃圾信息并点击漫游器

我有很多独立的PHP文件放在一个名为postRequests的目录中。这些文件接收我的AJAX脚本中编写的发布请求。我唯一的过滤检查某某领域是数字,谁谁是字符串等,以及快速的“定制卫生”功能:

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

许多AJAX调用非常简单,如链接,用于更新用户配置文件的标准或发送发表评论数据的请求。然而,这些可以通过点击机器人轻松发送垃圾邮件,用户只需键入内容并发送垃圾评论按钮(尽管我在每次提交后都清除了textarea)。

  • 这是一个担心,我如何才能对抗5秒后提交“hiowheihewr”评论文字的用户?
  • 我应该用别的东西保护我的用户输入数据吗?
  • 我已考虑使用HTTP身份验证,但我将如何存储密码?在我的AngularJS脚本中的字符串?这安全吗?

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

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

+0

应该认为用户已经登录来发表评论或对这些脚本进行调用吗?如果是这样,登录后,设置一个'$ _SESSION',表示他们已经登录。在你的PHP脚本中,检查设置了'$ _SESSION'。如果是,请允许评论,如果不是,则不做任何事情。我并不完全确定如何阻止普通用户输入诸如“hiowheihewr”之类的东西,但会话事件应该阻止一些随机调用您的脚本 – Ronnie 2015-02-23 23:32:13

+0

这是不是说用户可以只注册然后进行这些调用?是的,他们只能在脚本登录时才对脚本进行调用,否则脚本不会响应任何输入。我只是想知道一般问题有多少是垃圾邮件,以及某人能够轻松映射我的目录,阅读我的PHP文件,以及我应该保护哪些数据以及如何简单地停止使用'mysql'扩展名。“ – 2015-02-23 23:38:33

+1

现在停止使用'mysql'扩展名。使用'PDO'或'mysqli' – 2015-02-23 23:39:19

回答

0

安全

第一魔字是Prepared Statements。不需要mysqli_real_escape_string

使用准备好的语句,您将输入定义为输入。没有机会,那么会有mysql注入发生。

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

当然,如果我们在谈论shell_execute,eval或其他类似的东西,那么您肯定会需要更多的优化。那么永远不要相信用户输入是非常重要的。

垃圾邮件

我总是做它,它通过蜜罐法。建立一个链接,通过CSS隐藏。类似于:/submit-very-important-data.php

如果调用此页面,您知道它是由机器人调用的,并且您可以将其存储在SESSION中。如果你的网站不够大,没有人会关心一个特定的机器人,只为你的网页。

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

如果这一切都不适合你,你将需要一个验证码。

对于所有,SESSION将是你的朋友。

身份认证

不知道AngularJS,但如果用户Authentificated,为什么不能在Session存储?