本文目录一览:
- 1、response对象中有哪些属性
- 2、如何解决jsp http响应分割漏洞
- 3、“response”对象设置响应头属性方法是什么?
- 4、Python什么是 Response对象
- 5、Response对象的语法
- 6、httpresponse.header.xss 可以完全阻断xss攻击么
response对象中有哪些属性
Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。Response对象只提供了一个数据集合cookie,它用于在客户端写入cookie值。若指定的cookie不存在,则创建它。若存在,则将自动进行更新。结果返回给客户端浏览器。
语法格式:Response.Cookies(CookieName)[(key)|.attribute]=value。这里的CookiesName是指定的Cookie的名称,如果指定了Key,则该Cookie就是一个字典,Attribute属性包括Domain,Expires,HasKeys,Path,Secure。
response 对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器,重定向浏览器到另一个URL或设置cookie的值等.Response对象在asp编程中非常广泛,也是一种非常好用的工具.
基本格式:response.集合|属性|方法
response 的write方法:
response.write **
功能:向客户端发送浏览器能够处理的各种数据,包括:html代码,脚本程序等.
实例:
response.write "I LOVE YOU !!"
response的redirect方法:
response.redirect("url")的作用是在服务器端重定向于另一个网页。
实例:
response.redirect()
●JSP 中的response
在Java Servlet中同样用到response对象,是J2EE中java.servlet.http包中的类
HttpServletResponse response实例化后将用此对象响应客户端的请求
使用HttpServletResponse response的示例代码:
------------------
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletTest extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
out.println("HttpServletResponse response");
....
//方法示例..详细方法可以继续补充
response.addCookie(arg0);
response.addDateHeader(arg0, arg1);
response.addHeader(arg0, arg1);
....
out.flush();
out.close();
}
}
response的End方法:
用来终止脚本程序。在ASP程序中碰到Response.End语句后,立即终止。不过它会将之前的页面内容发送到客户端,只是不再执行后面的语句了。
response的Clear方法:
要说到Clear方法,就必须提到response的Buffer属性,Buffer属性用来设置服务器端是否将页面先输出到缓冲区。语法为:Response.Buffer=True/False
当Buffer的值为True时,Clear方法用于将缓冲区中的当前页面内容全部清除。
语法为:Response.Clear
response的Flush方法:
当Buffer的值为True时,Flush方法用于将缓冲区中的当前页面内容立刻输出到客户端。
语法为:Response.Flush
下面为Clear方法和Flush方法举例:
%
Response.Write "第一句"
Response.Flush ‘立刻输出缓冲区中的内容
Response.Write "第二句"
Response.Clear ‘清除缓冲区中的内容
Response.Write "第三句"
%
---------------------
语法:
Response.collection|property|method
一、集合
Response对象只有一个集合--Cookies,Cookies数据集合允许将数据设置在客户端的浏览器中。若指定的cookie不存在,则创建它。若存在,则自动更新数据。
语法:Response.Cookies(Cookie)[Key.Attribute]
这里的cookie是指定cookie的名称。而如果指定了key,则该cookie就是一个字典。attribute指定cookie自身的有关信息。attribute参数可以是下列之一:
Domain只写。若被指定,则cookie将被发送到对该域的请求中去。
Expires只写。指定cookie的过期日期。为了在会话结束后将cookie存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后cookie将到期。
HasKeys只读。指定cookie是否包含关键字。
Path只写。若被指定,则cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。
Secure只写。指定Cookie是否安全。
二、方法
Response.AddHeaderName,Value
向应答中添加一个新的HTML标题。Name为新HTML标题的名称。Value为该头变量的值。你可以添加任何名称和任何值的HTML标题。它并不替代现有的同名标题。一旦标题被添加,将不能删除。
Response.AppendToLogString
向Web服务器的日志条目的末尾添加一字符串。String为要添加到日志文件中的字符串。
Response.BinaryWriteData
该方法可以不经任何字符转换就将制定的信息写到HTTP输出,主要用于写非字符串信息(如客户端应用程序所需的二进制数据等)。Data是要发送的数据。
Response.Clear
删除缓冲区的所有HTML输出,但只删除响应正文而不删除响应标题。可以用该方法处理错误情况。需要注意的是,如果Response.Buffer设置为True,则该方法将导致运行是错误。
Response.End
强迫Web服务器停止执行更多的脚本,并发送当前结果,文件中剩余的内容将不被处理。如果Response.Buffer设置为True,则调用Response.end将缓冲输出。
Response.Flush
对于一个缓冲的回应,发送所有的缓冲信息。如果Response.Buffer设置为True,则该方法将导致运行是错误。
Response.RedirectURL
将客户端的浏览器重定向到一个新的Internet地址。Url为新网页的Internet地址。
Response.WriteVariant
Response.Write是Response对象最常用的方法,该方法可以向浏览器发送字符串。Variant是一字符串或一个具有字符串值的变量。
三、属性
Response.Buffer
缓冲一ActiveServerPage。回应只到某一页结束或Response.Flush或Response.End方法调用时才发送出去。服务器将输出送给客户端后就不能再设置Buffer属性。
Response.CacheControl
指明是否Proxy服务器能缓存ActiveServerPage。缺省时,其值为FALSE。当设置其属性为Public时,Proxy服务器可以缓冲由Asp产生的输出。
Response.CharSet(Charsetname)
将字符集名称(如GB)附加到Response对象中content-type标题的后面,用来设置web服务器响应给客户端的文件字符编码。一个可能的值为“ISO_LATIN_1”。
Response.ContentType
指明回应内容的类型。可能的值为text/plain和image/GIF,默认值text/HTML。
Response.Expires
浏览器可以缓存当前页的时间长度,以分钟为单位。
Response.ExpiresAbsolute
浏览器不能再缓存当前页的日期和时间。在未到期之前,可以返回。如果未指定时间,该主页在当天午夜到期;如果未指定日期,则到当天指定时间到期。
True/False=Response.IsClientConnected
属性为只读,指明自上次调用Response.Write之后,客户端是否仍然和服务器连接。该属性允许用户在客户端和服务器没有联接的情况下有更多的控制。例如,在从客户端提出请求起到服务器做出相应,其间要用去很长一段时间的情况下,这就可能有助于确保在继续处理脚本之前客户端仍是连通的。具有值TRUE或FALSE。
Response.PICS(PICS字符串)
用于添加网页的PICS等级。PICS级别指明某一网页的内容级别,比如暴力或色情的程度等。
Response.Status="状态描述字符串"
用来设置Web服务器要响应的状态行的值。
如何解决jsp http响应分割漏洞
在HTTP响应头拆分攻击中具体牵涉到三个对象:
漏洞服务器:即存在漏洞的服务器。
攻击工具:比如浏览器,类似IE6.0。
攻击者:发动攻击的人。
HTTP响应头拆分攻击本质是:攻击者可以发送一个或几个HTTP指令迫使漏洞服务器产生一个攻击者构想好的输出。它可以让服务器误把几条HTTP请求看成一次完成的HTTP请求来解释。第一条请求也许攻击者部分控制着一部分,但这并不是危险的;危险的是,攻击者完全控制着第二条HTTP请求,即从HTTP状态行一直到HTTP请求的尾部。如果这样可行,攻击者就会发送多个请求指令到目标系统:第一条使得服务器完全接受两个HTTP响应,第二条响应通常是在服务器上请求一些非法资源,而服务器将会自动匹配到第二条响应,输出攻击者想要请求的资源,从而达到攻击者的目的。
通过这个思路,我们可以构造出形形色色的攻击,具体来说:
1 跨站脚本攻击(XSS):这是一个非常普通和老式的漏洞,它可以让用户通过运行了一段javascript或者html代码后,可以截取该用户的cookie和session。但是到现在,通过一些重定向脚本发起一次XSS攻击是很困难的,尤其是当用户使用最新补丁的IE浏览器的时候,除非位置头是完全控制的。但是当结合HTTP响应头攻击确是可以非常简单实现,即使只是部分控制位置头。
2 web缓存中毒(我们称之为web损耗):这是一个新的攻击技术,攻击者强迫服务器高速缓存中记录了第二次HTTP请求,而服务器中的高速缓存记录的第二次请求是经过攻击者精心构造的。这将成功的对目标站点进行损耗,当其他人访问目标站点时,他们仅仅读取了高速缓存里的数据,造成站点被“黑”的假象。当然,除了站点损耗之外,攻击者也可以偷取用户的session和cookie。
3 通过对用户的攻击:这是第二种方式的一个特殊情况。它对单个用户的欺骗、对服务器单个页面的损耗,和暂时的磨损,也可以偷取到特定用户的session和cookie。
4 劫持具体用户的页面敏感信息:攻击者欺骗服务器,并取得敏感用户的权限,并进入其用户的状态,访问到一些秘密信息。
5 浏览器高速缓存中毒:这也是一项最新的攻击方式,它这和跨站脚本攻击方式有点类似,唯一的差别就是攻击者强迫浏览器高速缓存中记录一个长和持续的磨损的网页,直到浏览器的高速缓存已经清洁。
对于这些我将在后面一一作介绍。
三:web高速缓存中毒的实现
由于这是一个新兴的技术,所以这个段落我将对web高速缓存中毒的实现做进一步的分析。
1 毒害反向代理高速缓存:即电子涂写。在这种方式中,攻击者将直接面向网站。当然最厉害的手法是磨损该网站的首页,这样所有客户端将都受到影响,这也是最漂亮的手段,但是这样很容易被发现。
2 毒害一台中间高速缓存服务器:迂回。这种方式被发现是很困难的,中间缓存服务器是有很多的,而且漏洞服务器不可能占有所有的中间缓存服务器,这些服务器很有可能不是在同一个地方,比如我们攻击台湾的站点,我们很有可能会先攻击一台位于美国的中间缓存服务器,即使被调查到了也是要很久的,也许我们早就有时间把所有的信息给清除。
3 毒害浏览器高速缓存:一针见血。攻击者很有可能会瞄准到一个特殊用户,例如从一个很富有的用户那里偷取到证书,这样的攻击将会变得很独特而且很难实施。因为,它不同于跨站脚本攻击,而且被毒害的页面要始终保持在高速缓存中以等待受害者(即你所瞄准的用户)来装载,有时候受害者从来都不会登陆到那个页面,或者是受害者浏览器禁止了JAVA脚本的执行等等,都会造成无法成功。
四:HTTP响应头漏洞攻击基本技术。
HTTP响应头攻击把代码嵌入到用户信息中并放在HTTP头部,也发生在把用户信息和代码嵌入到重定向到的URL中,或者把脚本嵌入到cookie值或者name里。在第一条响应中,重定向的URL是HTTP响应头的一部分,第二条响应是确定cookie,cookie中的name/value是响应头中set-cookie的一部分。
“response”对象设置响应头属性方法是什么?
1、HttpWebResponse类的属性
CharacterSet 获取响应的字符集。
ContentEncoding 获取用于对响应体进行编码的方法。
ContentLength 获取请求返回的内容的长度。 (重写 WebResponse..::.ContentLength。)
ContentType 获取响应的内容类型。 (重写 WebResponse..::.ContentType。)
Cookies 获取或设置与此响应关联的 Cookie。
Headers 获取来自服务器的与此响应关联的标头。 (重写 WebResponse..::.Headers。)
IsFromCache 获取一个 Boolean 值,该值指示此响应是否为从缓存中获取的。 (继承自 WebResponse。)
IsMutuallyAuthenticated 获取一个 Boolean 值,该值指示客户端和服务器是否都已经过身份验证。 (重写 WebResponse..::.IsMutuallyAuthenticated。)
LastModified 获取最后一次修改响应内容的日期和时间。
Method 获取用于返回响应的方法。
ProtocolVersion 获取响应中使用的 HTTP 协议的版本。
ResponseUri 获取响应请求的 Internet 资源的 URI。 (重写WebResponse..::.ResponseUri。)
Server 获取发送响应的服务器的名称。
StatusCode 获取响应的状态。
StatusDescription 获取与响应一起返回的状态说明。
使用示例
C# 代码 复制
static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(""); //创建一个请求示例
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(response.CharacterSet); //输出 utf-8
Console.WriteLine(response.ContentEncoding); //空
Console.WriteLine(response.ContentLength); //输出 10310
Console.WriteLine(response.ContentType); //输出 text/html charset=utf-8
CookieCollection cc = response.Cookies;
Console.WriteLine(cc.Count); //输出 0
WebHeaderCollection whc = response.Headers;
Console.WriteLine(whc.Count); //输出 9
foreach (string h in whc.AllKeys)
{
Console.WriteLine(h.ToString() + " " + whc[h].ToString()); //输出所有的响应头信息
}
Console.WriteLine(response.IsFromCache); //输出 false 该值指示响应是否从缓存获取的
Console.WriteLine(response.IsMutuallyAuthenticated); //输出 false 客户端和服务器端都已通过身份认证
Console.WriteLine(response.LastModified); //输出 2013-04-06 21:03:06 最后一次修改响应的时间和日期
Console.WriteLine(response.Method); //输出 Get 返回响应的方法
Console.WriteLine(response.ProtocolVersion); //输出 1.1 响应的HTTP协议的版本
Console.WriteLine(response.ResponseUri); //输出 响应请求的Interner资源的URI
Console.WriteLine(response.Server); //输出 BWS/1.0 发送响应的服务器的名称
Console.WriteLine(response.StatusCode); //输出 OK 获取响应的状态,这个不是状态码,而是状态描述,为什么不是200呢,奇怪啊,测试了好几个网站都是OK,而不是200
Console.WriteLine(response.StatusDescription); //输出 OK 这个是状态描述,
Console.ReadKey();
}
2、HttpWebResponse类的方法
Close 关闭响应流。 (重写 WebResponse..::.Close()()()。)
CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
Dispose 释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。
GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
GetObjectData 基础结构。 使用将目标对象序列化所需的数据填充 SerializationInfo。 (重写 WebResponse..::.GetObjectData(SerializationInfo, StreamingContext)。)
GetResponseHeader 获取与响应一起返回的标头的内容。
GetResponseStream 获取流,该流用于读取来自服务器的响应的体。 (重写 WebResponse..::.GetResponseStream()()()。)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
Python什么是 Response对象
response是返回值的意思
在python爬虫中,发送数据请求后,返回的数据,不是网页的源代码,
Response对象的语法
Response对象只有一个集合--Cookies,Cookies数据集合允许将数据设置在客户端的浏览器中。若指定的cookie不存在,则创建它。若存在,则自动更新数据。
语法:Response.Cookies(Cookie)[Key.Attribute]
这里的cookie是指定cookie的名称。而如果指定了key,则该cookie就是一个字典。attribute指定cookie自身的有关信息。attribute参数可以是下列之一:
Domain只写。若被指定,则cookie将被发送到对该域的请求中去。
Expires只写。指定cookie的过期日期。为了在会话结束后将cookie存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后cookie将到期。
HasKeys只读。指定cookie是否包含关键字。
Path只写。若被指定,则cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。
Secure只写。指定Cookie是否安全。 Response.AddHeaderName,Value
向应答中添加一个新的HTML标题。Name为新HTML标题的名称。Value为该头变量的值。你可以添加任何名称和任何值的HTML标题。它并不替代现有的同名标题。一旦标题被添加,将不能删除。
Response.AppendToLogString
向Web服务器的日志条目的末尾添加一字符串。String为要添加到日志文件中的字符串。
Response.BinaryWriteData
该方法可以不经任何字符转换就将制定的信息写到HTTP输出,主要用于写非字符串信息(如客户端应用程序所需的二进制数据等)。Data是要发送的数据。
Response.Clear
删除缓冲区的所有HTML输出,但只删除响应正文而不删除响应标题。可以用该方法处理错误情况。需要注意的是,如果Response.Buffer设置为True,则该方法将导致运行是错误。
Response.End
强迫Web服务器停止执行更多的脚本,并发送当前结果,文件中剩余的内容将不被处理。如果Response.Buffer设置为True,则调用Response.end将缓冲输出。
Response.Flush
对于一个缓冲的回应,发送所有的缓冲信息。如果Response.Buffer设置为True,则该方法将导致运行是错误。
Response.RedirectURL
将客户端的浏览器重定向到一个新的Internet地址。Url为新网页的Internet地址。
Response.WriteVariant
Response.Write是Response对象最常用的方法,该方法可以向浏览器发送字符串。Variant是一字符串或一个具有字符串值的变量。 Response.Buffer
缓冲一ActiveServerPage。回应只到某一页结束或Response.Flush或Response.End方法调用时才发送出去。服务器将输出送给客户端后就不能再设置Buffer属性。
Response.CacheControl
指明是否Proxy服务器能缓存ActiveServerPage。缺省时,其值为FALSE。当设置其属性为Public时,Proxy服务器可以缓冲由Asp产生的输出。
Response.CharSet(Charsetname)
将字符集名称(如GB)附加到Response对象中content-type标题的后面,用来设置web服务器响应给客户端的文件字符编码。一个可能的值为“ISO_LATIN_1”。
Response.ContentType
指明回应内容的类型。可能的值为text/plain和image/GIF,默认值text/HTML。
Response.Expires
浏览器可以缓存当前页的时间长度,以分钟为单位。
Response.ExpiresAbsolute
浏览器不能再缓存当前页的日期和时间。在未到期之前,可以返回。如果未指定时间,该主页在当天午夜到期;如果未指定日期,则到当天指定时间到期。
True/False=Response.IsClientConnected
属性为只读,指明自上次调用Response.Write之后,客户端是否仍然和服务器连接。该属性允许用户在客户端和服务器没有联接的情况下有更多的控制。例如,在从客户端提出请求起到服务器做出相应,其间要用去很长一段时间的情况下,这就可能有助于确保在继续处理脚本之前客户端仍是连通的。具有值TRUE或FALSE。
Response.PICS(PICS字符串)
用于添加网页的PICS等级。PICS级别指明某一网页的内容级别,比如暴力或色情的程度等。
Response.Status=状态描述字符串
用来设置Web服务器要响应的状态行的值。
httpresponse.header.xss 可以完全阻断xss攻击么
page= ;alert(document.cookie); 你没有闭合双引号,导致;alert(document.cookie); 成了变量的值了 右键网页源码中如下:var page=";alert(document.cookie);"; 正确答案其实有很多种只要闭合两端的引号 中间的js代码可以有多种变化。 ";\u0061...