我最近开始使用AJAX和AngularJS进行编码,异步GET和POST请求非常酷!我发现了一些我不确定非常重要的问题,但它们似乎确实如此。
我有几乎单独的PHP文件放在名为postRequests的目录中。这些文件接收在我的AJAX脚本中编码的post请求。我唯一的过滤就是检查那样的字段是数字的,字符串等也是如此,以及快速的自定义卫生设施"功能:
function sanitize($string) {
return mysqli_real_escape_string($dbc, trim($string));
}
这些AJAX调用中的许多都非常简单,例如更新用户个人资料条件的链接或发送评论后数据的请求。但是,这些很容易被点击机器人发送垃圾邮件,用户只需键入内容并垃圾邮件注释按钮(尽管我在每次提交后都清除了textarea)。
此外,我的MySQL数据库凭据都存储在名为constants.php的文件中的字符串(未加密)中,每当我建立数据库连接时都会引用该文件。这样安全吗?
我应该如何存储这些管理员密码,这是我应该担心的问题(点击机器人和密码的存储)。有人发现我的PHP文件解析我的POST请求,发送POST请求到我的php文件,或者发现我的文件目录并阅读php或JS脚本有多容易?
答案 0 :(得分:0)
安全强>
第一个神奇的词是Prepared Statements
。无需mysqli_real_escape_string
。
使用预准备语句,您可以将输入定义为输入。没有机会,那时会发生mysql注入。
也永远不要相信用户的输入。如果你想要一个电话号码,为什么它还有其他任何东西0-9,-,/,
?
如果我们谈论shell_execute
,eval
或类似的事情,当然你需要更多的实施。那么永远不要相信用户输入是非常重要的。
垃圾强>
我总是通过蜜罐法做到这一点。创建一个通过CSS
隐藏的链接。类似于:/submit-very-important-data.php
如果调用此页面,您知道它是由机器人调用的,您可以将其存储在SESSION
中。如果您的网站不够大,那么没有人会关心特定的机器人,仅适用于您的网页。
如果用户在您的网页上超过30秒(或类似内容),也只接受评论。
如果这一切对您不起作用,您将需要验证码。
总而言之,SESSION
将是您的朋友。
<强>身份认证强>
不知道AngularJS
,但如果用户已经过身份验证,为什么不存储在Session
?