所有
我有一个用Zend Framework和MVC编写的PHP网站。大多数控制器操作检查请求是否是Ajax请求,否则他们将用户重定向到主页。我正在考虑打破该网站的各种方法。我正在考虑以下情况:
用户将JQuery ajax发布请求写入我网站上的某个控制器,并尝试发布恶意信息。 例如:
$.ajax({
type: 'POST',
url: "https://marketsite/getinfo/getstuff",
cache: false,
dataType: "html",
success: function(html_response){
alert(html_response);
},
error: function(xhr,ajaxOptions,errorThrown){
alert(errorThrown);
}
});
我的问题是上面的ajax请求中的“url”属性是否采用绝对路径?我知道这需要相对路径。此外,是否可以通过发送此类请求来破坏任何网站?
由于
答案 0 :(得分:5)
我的问题是上面的ajax请求中的“url”属性是否采用绝对路径?
Same Origin Policy阻止JavaScript发出请求并读取响应,除非它是相同的主机,端口和协议。
这并不能阻止攻击者发出他们喜欢的任何HTTP请求(手动构建一个看起来与通过JS制作的相同)并且它不会阻止攻击者欺骗用户制作任何HTTP请求请求攻击者喜欢(它确实阻止攻击者获得对该请求的响应)。
攻击者无需使用PHP或任何其他服务器端语言来执行此操作。
此外,是否可以通过发送此类请求来破坏任何网站?
这取决于网站的编写方式。您应该对设计用于通过JavaScript访问的URI应用相同的安全检查,这些URI是专为访问而设计的,具有来自浏览器的直接请求。
答案 1 :(得分:1)
除非您的客户修改其浏览器安全设置,否则AJAX请求仅限于其原始网站的相对路径。当然,黑客可以改变Javascript以指向他想要的任何URL。
答案 2 :(得分:0)
大卫的回答非常有帮助,我需要提一下几个信息 1-Zend框架具有检测ajax请求检查此Detecting AJAX Requests
的功能2 - 那里有一个开源项目(PHP IDS),非常方便,它允许你:
目前,PHPIDS会检测各种XSS,SQL注入,标头注入,目录遍历,RFE / LFI,DoS和LDAP攻击。通过特殊的转换算法,PHPIDS甚至可以检测到严重混淆的攻击 - 这包括几个字符集,如UTF-7,所有形式的实体 - 例如JavaScript Unicode,十进制和十六进制实体以及注释混淆,通过串联进行混淆, shell代码和许多其他变体。
希望我能帮到你:)