2014-10-11 61 views
1

我正在开发一个Web应用程序,其中已经开发了各种模块和脚本。现在随着各种PHP脚本和JavaScript的使用,应用程序按预期工作。PHP代码执行并防止未经授权的外部访问执行

我愿意阻止未经授权执行PHP脚本。我的意思是应用程序有JavaScript,据此Post参数被张贴为变量是用JavaScript编写的,因此任何人都可以查看传递值到php脚本的细节。另外,我不能绕过这样的行为,因为它会对数据库的记录进行一些必要的数据操作,添加,修改和删除操作。

如果有不良意图的人阅读了javascript并通过POST参数向PHP脚本发送了类似的参数,Web应用程序将无法识别请求是来自授权用户还是来自未授权用户。

假设,如果在Web应用程序中的一些操作通过jQuery做客户的缺失与AJAX,它会像

 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; 

我使用其中包含的信息和真实的验证某些登录会话变量JavaScript的地方写,我担心可能发生的这种危险。

此外,如果一些机构使用以下

<img src="http://www.dummy-application.com/delete_record.php?id=123" />

现在要求用户打开该网页。现在,由于用户登录到应用程序中,URL将被触发,脚本将采取任何必要的操作。

所以基本上黑客已经提出了技术上有效但未经授权的请求。所以从技术上说,这里的问题是服务器无法识别用户是否愿意调用url。因此需要有一个机制来解决这个问题。

我想要的是一个简单的方法来验证或确定是否真实或从做假如此重要的任务。所以我想要防止黑客谁可以发送欺诈请求以有效的方式到PHP脚本

如果任何人有解决方案,这样的行动可以阻止,我寻求帮助和建议,如何实施它。

由于英语不是我们的主要语言,我很抱歉我的英语水平不高。但是我请所有人都请在这件事上引导我。

回答

0

我想你必须使用令牌。简而言之,当一个授权用户请求一个页面时,您还会发送一个新生成的令牌(该页面有一个到期时间)。收到请求时,检查是否发布了令牌并且是否仍然是有效令牌,如果是,则执行该脚本。

0

您可以将验证和授权图层添加到您的脚本或应用程序。

认证:用户对系统是已知的。谁是用户?

授权:允许用户执行某个操作。用户X是否有权执行操作Y?

您可以通过添加“令牌”或“时间窗口”来改善这一点。

例如,认证超时,15分钟后。功能称为:自动注销。

另一种策略是用“代币”或“时间窗口”来调整你的表格。

例如,执行操作的权限仅在请求表单后2分钟内有效。您可能会将时间签名添加到会话和表单中。

或者,如果发送了正确的授权令牌,则执行操作的权限才有效。 只有经过身份验证的用户请求表单时,才会插入此身份验证令牌。 如果用户(a)已通过身份验证并且(b)表单标记正确,则表单仅被处理。

令牌验证相当普遍,但您有很多选择来添加安全功能。

当谈到AJAX请求时:通常通过标头传递令牌。 赞,X-Requested-With: XMLHttpRequest + X-MyApplication-AuthToken: <token>

周围有很多PHP库。不要重新发明轮子。尤其不是,在安全性方面,逻辑错误可能会给应用程序带来大的漏洞。使用拥有大量用户或常用框架的库,该库提供可靠的身份验证和授权助手。

此外,您也可以尝试以保护随机URL服务器通过检查你的日志和阻止坏机器人和爬虫访问。