Php 保护现场';s数据和打击垃圾邮件,点击机器人

Php 保护现场';s数据和打击垃圾邮件,点击机器人,php,angularjs,security,Php,Angularjs,Security,我最近开始使用AJAX和AngularJS进行编码,使用PHP进行异步GET和POST请求非常酷!我遇到了一些我不确定是否非常重要的问题,但它们似乎确实非常重要 我在一个名为postRequests的目录中有很多独立的PHP文件。这些文件接收在我的AJAX脚本中编码的post请求。我唯一的过滤功能是检查某某字段是否为数字,某某字段是否为字符串等,以及一个快速的“自定义卫生”功能: function sanitize($string) { return mysqli_real_escape

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

我在一个名为postRequests的目录中有很多独立的PHP文件。这些文件接收在我的AJAX脚本中编码的post请求。我唯一的过滤功能是检查某某字段是否为数字,某某字段是否为字符串等,以及一个快速的“自定义卫生”功能:

function sanitize($string) {
    return mysqli_real_escape_string($dbc, trim($string));
}
许多AJAX调用都非常简单,例如更新用户配置文件标准的链接或发送评论后数据的请求。然而,这些可以很容易地通过点击机器人发送垃圾邮件,用户只需键入一些内容并通过“评论”按钮发送垃圾邮件(尽管每次提交后我都会清除文本区域)

  • 这是一种担忧吗?我如何才能阻止用户在5秒后提交“hiowheihewr”评论文本
  • 我应该用其他东西保护我的用户输入数据吗
  • 我曾考虑过使用HTTP身份验证,但如何存储密码?在我的AngularJS脚本的字符串中?这安全吗
此外,我的MySQL数据库凭据都以字符串形式(未加密)存储在一个名为constants.php的文件中,每当我建立数据库连接时,都会引用该文件。这安全吗


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

安全性

第一个神奇的词是
准备好的语句
。不需要
mysqli\u real\u escape\u字符串

使用准备好的语句,您可以将输入定义为输入。不可能,那时会发生

也不要相信用户的输入。如果您需要一个电话号码,那么为什么它还应该有其他号码呢

当然,如果我们谈论的是
shell\u execute
eval
或类似的东西,您需要更多的santization。因此,永远不要相信用户的输入是非常重要的

垃圾邮件

我总是用蜜罐法。创建一个通过
CSS
隐藏的链接。类似于:
/提交非常重要的数据。php

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

如果用户在您的页面上停留时间超过30秒(或类似的时间),也只接受评论

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

总之,
SESSION
将是你的朋友

认证


不知道
AngularJS
,但是如果用户经过身份验证,为什么不将其存储在
会话中呢?

是否应将用户视为登录以评论或调用这些脚本?如果是这样,在登录时,设置一个表示他们已登录的
$\u会话。在PHP脚本中,检查
$\u会话
是否已设置。如果是,允许评论,如果不是,什么也不做。我不完全确定如何才能阻止普通用户键入“hiowheihewr”之类的内容,但是会话应该可以阻止一些随机调用您的脚本,这难道不意味着用户可以注册然后进行这些调用吗?是的,他们只有在登录后才能调用脚本,否则脚本不会响应任何输入。我只是想知道,一般来说,垃圾邮件在多大程度上是一个问题,对于某人来说,映射我的目录、读取我的PHP文件有多容易,我应该保护哪些数据,以及现在如何停止使用
mysql
扩展名。使用
PDO
mysqli
我看不到我在哪里使用mysql?可能不好,我只看到
real\u escape\u string
。查看
准备好的语句