获取ip地址的方法:
String ip = requestgetHeader("x-forwarded-for");
if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {
ip = requestgetHeader("Proxy-Client-IP");
}
if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {
ip = requestgetHeader("WL-Proxy-Client-IP");
}
if(ip == null || iplength() == 0 || "unknown"equalsIgnoreCase(ip)) {
ip = requestgetRemoteAddr();
}
获取body请求体中的数据的方法:
用io去读
BufferedReader reader = requestgetReader();
String str, wholeStr ="";
while((str = readerreadLine()) != null){
wholeStr += str;
}
JSONObject params = new JSONObject()parseObject(wholeStr);
然后paramsget("xx")就可以直接获取参数了 当然请求体中的数据得是json格式
以点到面,知道了web中getContextPath()这种获取路径的方式,显然其他的方式的是可以以此类推的。常说,工作学习找共同点嘛。 上一段我们也提高getContextPath()的含义,是jsp中获取路径的一种方式,返回当前页面所在的应用的名字。知其然知其所以然,知道它大体上的含义,看看在项目中是如何使用的
String path = requestgetContextPath();
String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/";">
在程序中我们一般这样使用。说到了这里,我们可以看看request常用的方法:
requestgetSchema(),返回的是当前连接使用的协议,一般应用返回的是>
最近看了一篇关于csrf机制的文章,觉得很有收获,所以自己总结了一下与大家分享
首先我们要理解一个概念,要从三个方面入手,即是什么?为什么?怎么做?
一、CSRF是什么?
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。(出自百度百科)
二、CSRF机制是什么?
CSRF验证机制是为了预防CSRF攻击而创立的,它的具体验证方法是:从cookie中获取一个csrf_token的值,再从请求体中获取一个csrf_token的值,二者进行比较,如果两个值相同则验证通过。如果两个值不同,则验证失败,拒绝请求。
三、为什么要用CSRF机制?
首先我们通过一个案例来了解CSRF的危害:如下图所示,假设用户通过浏览器访问一个银行网站时,浏览器会将cookie中的用户信息发给银行网站,然后用户在银行网站上进行转账 *** 作,网站就接收到用户的POST请求和请求体中的信息,包括转账人和转账金额等。
这是正常的请求流程,但有些黑客网站会伪造成银行网站(使用相似的域名或IP地址)当用户误点进黑客网站后,黑客网站就会获取到用户的cookie信息,这样他就可以伪造一个转账POST请求发给真正的银行网站,而银行并不知道这个请求是伪造的,就会造成危害和损失。
图1:未开启csrf防护机制的情况
上面是没有使用csrf防护机制的情况,如果使用了csrf机制,我们在cookie中和请求体中都加入了csrf-token变量,在上述案例中,当用户误点进黑客网站后,黑客虽然能得到用户的cookie,但他在伪造请求时就无法获取到请求体中的csrf-token值。
这里有同学会问了,既然我都获取到用户的cookie了,那我直接从cookie中读取csrf-token的值不就行了吗?这里就用到了浏览器的一个机制了,也是csrf防护机制的核心机制,就是同源策略,同源策略就是浏览器限制了不同源(IP)的网站不能相互 *** 作资源。
所以,由于同源策略的限制,黑客网站根本无法获取到csrf-token的值,但他不死心啊,他还是伪造了请求发给银行网站,企图瞎猫碰死耗子,但csrf-token的值都是加密过的,蒙对的概率无异于中**,结果可想而知,银行网站收到请求后通过比对用户cookie和请求体的csrf-token的值就会发现这是伪造的请求,所以果断拒绝。
这样通过csrf防护机制,就可以避免悲剧的发生,为人类文明的和谐发展贡献一份绵薄之力,实乃幸也!
图2:开启csrf防护机制
总结:总体来说,csrf防护机制是很有必要的,它可以大大的提高网站的安全性,所以我们在建站时要注意使用这个机制,不积小流,无以成江河,不积跬步,无以至千里。希望今天我的讲解能够让大家有所收获~
最后打一波广告,本人是python全栈工程师,如果各位大佬有什么兼职项目或者工作机会都可以找我哈,感激不尽~
我的QQ:1480456073
展开
Request中的各种方法
2017年02月09日 10:36:55 现龙在田丶 阅读数:7250 标签: java web web Request 更多
个人分类: JAVA Web Request
原文地址:>
当您需要将数据从客户端(例如浏览器)发送到API时,可以将其作为 “请求体” 发送。
请求体 是客户端发送到您的API的数据。 响应体 是您的API发送给客户端的数据。
API几乎总是必须发送一个 响应体 ,但是客户端并不需要一直发送 请求体 。
定义 请求体 ,需要使用 Pydantic 模型 。
例如,上面的模型 Item 声明了一个 JSON 对象(或Python dict ),例如:
description 和 tax 属性是可选的(因为有默认值 None ),所以下面这个 JSON 对象也是有效的:
将上面定义的模型添加到你的路径 *** 作中,就和定义Path和Query参数一样的方式:
声明参数的类型为你创建的模型 Item
通过那样定义Python 类型为 pydantic 的 model , FastAPI 将会:
模型的 JSON Schema 将成为OpenAPI生成模式的一部分,并将显示在交互式API文档中:
并且还将在需要它们的每个路径 *** 作的API文档中使用:
在你的编辑器中,编写的函数中,你将会获得类型提示和补全:
您也会获得类型 *** 作错误检查:
Pydantic 本身甚至进行了一些更改以支持此 *** 作。
但是您可以通过 PyCharm 和大多数其他Python编辑器获得相同的编辑器支持:
在函数内部,您可以直接访问模型对象的所有属性:
你可以同时定义 Path参数 和 请求体参数
你可以同时定义 Path参数 、 Query参数 和 请求体参数
FastAPI 将识别它们中的每一个并从正确的位置获取数据。
以上就是关于获取HttpServletRequest中的ip地址和body中的请求数据全部的内容,包括:获取HttpServletRequest中的ip地址和body中的请求数据、web项目中,request的方法详解、浅谈CSRF机制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)