我正在开发一个Web应用程序,其中开发了各种模块和脚本。现在使用各种PHP脚本和javascript,应用程序按预期工作。
我愿意阻止未经授权执行PHP脚本。我的意思是应用程序有javascript,其中Post参数作为变量发布是用javascript编写的,任何人都可以查看将值传递给php脚本的详细信息。此外,我无法绕过这样的操作,因为它对数据库的记录进行了一些必要的数据操作,添加,修改和删除。
如果有不良意图的人阅读了javascript并通过POST参数将相似类型的参数发送到PHP脚本,则Web应用程序将无法识别请求是来自授权用户还是来自未授权用户。
假设Web应用程序中的某些操作是否通过jquery删除了带有ajax的客户,那么它将在javascript中的某处写入
var request = $.ajax({
url: "phpscript.php",
type: "POST",
data: {DataInp: 'CustomerNo', Action: 'delete'}
});
request.done(function( msg ) {
SRes = msg;
});
request.fail(function( jqXHR, textStatus ) {
SRes = false;
alert( "Request failed: " + textStatus );
});
return SRes;
我正在使用包含一些登录信息和真实验证的会话变量,我担心会发生这样的危险。
此外,如果某些机构使用以下
<img src="http://www.dummy-application.com/delete_record.php?id=123" />
现在请用户打开此网页。现在,由于用户已登录到应用程序,因此将触发URL并且脚本将采取任何必要的操作。
所以基本上黑客已经提出了技术上有效的请求,但它是未经授权的。从技术上讲,这里的问题是服务器无法识别用户是否愿意调用url。因此,需要有一种机制来解决这个问题。
我想要的是一种简单的方法来验证或识别是否真实或在执行此类重要任务时欺诈。所以我想阻止黑客以有效的方式向PHP脚本发送欺诈请求
如果有人有解决方案并且可以阻止此类行动,我会寻求帮助和建议如何实施。
我很抱歉我的英语不好,因为英语不是我们的主要语言。但我请求所有人请指导我。
答案 0 :(得分:0)
我猜你必须使用令牌。简而言之,当授权用户请求页面时,您还会向页面发送新生成的令牌(设置了到期时间)。收到请求时,检查是否已发布令牌以及是否(仍然)是有效令牌,如果是,则执行脚本。
答案 1 :(得分:0)
您可以在脚本或应用程序中添加身份验证和授权层。
身份验证:系统已知用户。谁是用户?
授权:允许用户执行某项操作。用户X是否被授权执行操作Y?
您可以通过添加“令牌”或“时间窗口”来改善这一点。
例如,15分钟后身份验证超时。功能称为:自动注销。
另一种策略是用“令牌”或“时间窗口”为表单增添趣味。
例如,在请求表单后,执行操作的授权仅在2分钟内有效。您可以为会话和表单添加时间签名。
或者,如果发送了正确的身份验证令牌,则执行操作的授权才有效。 仅当经过身份验证的用户请求表单时,才会插入此身份验证令牌。 如果用户(a)经过身份验证并且(b)表单令牌正确,则仅处理表单。
Token-Auth非常常见,但您有很多选项可以添加安全功能。
说到AJAX请求:通常会通过标头传递令牌。
比如,X-Requested-With: XMLHttpRequest
+ X-MyApplication-AuthToken: <token>
。
周围有很多PHP库。不要重新发明轮子。尤其不是,就安全性而言,几乎没有逻辑错误可能会给您的应用带来大洞。使用包含大量用户的库或常用的框架,该框架提供可靠的身份验证和授权帮助程序。
此外,您还可以通过检查日志并阻止错误的机器人和抓取工具来尝试保护您的服务器免受随机URL访问。