本文目录一览:
- 1、如何有效防止XSS攻击/AJAX跨域攻击
- 2、如何解决ajax跨域问题
- 3、如何接收ajax post请求
- 4、jquery中ajax提交和post提交有啥区别???
- 5、PHP怎么接收jQuery的Ajax post过来的值?
- 6、jquery中ajax中post *** 传递参数
如何有效防止XSS攻击/AJAX跨域攻击
1,利用字符过滤漏洞,提交恶意js代码,当用户打开页面时执行
2,需要填写图片地址或css等直接在页面加载时执行的地方,填写恶意js [javascript:xxxx],当用户打开包含图片的页面时,可以执行js。比如GET s1.game.com/fight/:id 表示发兵到某个用户,虽然做了用户验证,但没做来源验证,用户只需将这个地址发到同用户的论坛作为图片地址即可执行
3,通过跳转页面漏洞,比如 refer.php?message=xxxx ,页面上直接用 $_GET['message'] 的话,就会造成xss漏洞,把message的参数换成js代码或恶意网址,即可盗取用户cookie,或执行恶意js,或跳转到钓鱼页面等
4,利用浏览器或服务器0day漏洞
1,XSS主要是你的页面可以运行用户写的js,所以对所有的用户提交的数据进行过滤,对于判断用户是否登录状态的cookie信息进行加密,并且加上Ip信息,这样基本被盗取也无法获取登录权限
2,对update或delete的操作采用post方式提交,每次form里加一个唯一验证字符串,用hiden方式提交,用于服务器验证是否来自用户客户端
3,跳转程序需要对传递的url进行匹配判断,只允许特定的格式
4,时常关注安全方面的消息,一有漏洞即刻不上
如何解决ajax跨域问题
1、什么是跨域
跨域问题产生的原因,是由于浏览器的安全机制, *** 只能访问与所在页面同一个域(相同协议、域名、端口)的内容(参考js的同源策略)。
但是我们项目开发过程中,经常会遇到在一个页面的 *** 代码中,需要通过AJAX去访问另一个服务器并返回数据,这时候就会受到浏览器跨域的安全限制了。
这里要注意,如果只是通过AJAX向另一个服务器发送请求而不要求数据返回,是不受跨域限制的。浏览器只是限制不能访问另一个域的数据,即不能访问返回的数据,并不限制发送请求。
2、跨域解决方案
jsonp
Web页面上调用js文件时不受是否跨域的影响,凡是拥有"src"这个属性的标签都拥有跨域的能力,比如script、img、iframe。那就是说如果要跨域访问数据,就服务端只能把数据放在js格式的文件里。恰巧我们知道 *** ON可以简洁的描述复杂数据,而且 *** ON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据。然后客户端就可以通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件。客户端在对 *** ON文件调用成功之后,也就获得了自己所需的数据。这就形成了 *** ONP的基本概念。允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住 *** ON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
三步走:创建script、指定src,插入到文档。
jQuery支持 *** ONP的调用。在另外的一个域名中指定好回调函数名称,就可以用下面的形式来就加载 *** ON数据。
jQuery.get *** ON(url + "callback=?", function(data) {
alert(data.a + data.b);
});
服务端当然也要提供 *** ONP的支持,其实只要提供读写callback这个params就可以了。
跨域资源共享(CORS)
Cross-Origin Resource Sharing (CORS) 是W3c工作草案,它定义了在跨域访问资源时浏览器和服务器之间如何通信。CORS背后的基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方,从而决定请求或响应成功与否。
CORS与 *** ONP相比,更为先进、方便和可靠。
1、 *** ONP只能实现GET请求,而CORS支持所有类型的HTTP请求。
2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起 *** ONP有更好的错误处理。
3、 *** ONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS。
对一个简单的请求,没有自定义头部,要么使用GET,要么使用POST,它的主体是text/plain,请求用一个名叫Orgin的额外的头部发送。Origin头部包含请求页面的头部(协议,域名,端口),这样服务器可以很容易的决定它是否应该提供响应。
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。
Header set Access-Control-Allow-Origin *
为了防止XSS攻击我们的服务器, 我们可以限制域,比如
Access-Control-Allow-Origin:
很多服务都已经提供了CORS支持,比如 AWS 支持跨域资源分享功能CORS,向S3上传不需要 *** 。
如何接收ajax post请求
可以利用 PHP 预定义的 $_POST 变量用于获取来自 method="post" 的表单中的值 或 来自 ajax post 请求发来的值;例如下例所示:
利用 ajax 进行提交:$.post(url,{name:'xxx'},callback);
那么,在服务器的后台的PHP代码中,可以利用 $_POST 来获取ajax传递的值;
$name = $_POST['name'];
同样可以使用预定义的 $_GET 和 $_REQUEST 变量来接收传递的值;其中,$_GET 来接受 get 请求的传递值;$_REQUEST 用来接收包括 POST 、GET 的两者所有的传递值。
请注意,需要对传递过来的值进行过滤,确保传递的值不会引起SQL注入或xss攻击。
jquery中ajax提交和post提交有啥区别???
我猜测。你用 alert(data).输出 ajax 获取的数据。
在$.ajax()中 可以输出数据
在$.post()中 alert 没用,什么都不输出。
如果你的$.post() 使用的是'json' 的方式。那说明你代码没问题。你在尝试下 alert(data.xxx)
就可以输出你的数据了。
在$.ajax() 中,你使用json 还必须把获得的数据 eval 下。不然获得的数据不能按照json 的样式调用。
在$.post()中。你使用json 获取数据。当然你获取数据的格式必须是json 的格式。这样你就可以直接调用json 数据。就这样 data.xxxx each(data.xxx,function(i,con){})。明白了吗?
总的来说。$.ajax() 说是使用json 获取数据。实际上获取的是字符串,空有json的架子。使用前必须 ddd=eval(data);然后就可以 ddd.xxx 。你说麻烦不麻烦,还容易出错。
$.post() 使用json 获取数据才是真正的json 数据。我喜欢用这个
PHP怎么接收jQuery的Ajax post过来的值?
1、首先安装配置php集成环境。以phpstudy为例。
2、在www目录下新建一个html文件(new1.html),和一个php(ab.php)文件。
3、html文件先引用所需的类库jquery文件,其次在body部分,以一个简单的表单提交为例。
4、html的javascript-ajax部分,以上步body中的cilik事件为例。
5、php文件的编写部分,主要使用$_POST来接受ajax传输的数据,并可以返回不同类型的数据。如echo结果或者json_encode转码成为json格式的数据返还给前端做处理。
6、结果展示:表单中的内容在提交后,无刷新展示了出来。
jquery中ajax中post *** 传递参数
jQuery ajax - post() *** :
1、定义和用法:
post() *** 通过 HTTP POST 请求从服务器载入数据。
2、语法:
jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
url :必需。规定把请求发送到哪个 URL。
data :可选。映射或字符串值。规定连同请求发送到服务器的数据。
success(data, textStatus, jqXHR): 可选。请求成功时执行的回调函数。
dataType :可选。规定预期的服务器响应的数据类型。默认执行智能判断(xml、json、script 或 html)。