本文目录一览:
- 1、Spring MVC 如何防止XSS、SQL注入攻击
- 2、html5 localstorage 怎么取存储条数
- 3、程序员需要具备哪些东西?
- 4、SpringMVC如何有效的防止XSS注入?
- 5、电脑假死是什么原因?
Spring MVC 如何防止XSS、SQL注入攻击
在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原 在显示的时候对非法字符进行转义 如果项目还处在起步阶段,建议使用第二种,直接使用jstl的c:out标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。 附:Javascript方法: String.prototype.escapeHTML = function () { return this.replace(//g, ‘’).replace(//g, ‘’).replace(//g, ‘’).replace(/”/g, ‘"’);} 如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils public class StringEscapeEditor extends PropertyEditorSupport { private boolean escapeHTML; private boolean escapeJavaScript; private boolean escapeSQL; public StringEscapeEditor() { super(); } public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {super();this.escapeHTML = escapeHTML; this.escapeJavaScript = escapeJavaScript; this.escapeSQL = escapeSQL;}@Overridepublic void setAsText(String text) { if (text == null) { setValue(null);} else {String value = text; if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); } if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); } if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }}@Overridepublic String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”; }} 在上面我们做了一个EscapeEditor,下面还要将这个Editor和Spring的Controller绑定,使服务器端接收到数据之后能够自动转移特殊字符。 下面我们在@Controller中注册@InitBinder @InitBinder public void initBinder(WebDataBinder binder) { 这个方法可以直接放到abstract Controller类中,这样子每个Controller实例都能够拥有该方法。至此第二种方法完成,但是在还原的方法暂时还没有。
html5 localstorage 怎么取存储条数
在HTML5本地存储出现以前,WEB数据存储的方法已经有很多,比如HTTP Cookie,IE userData,Flash Cookie,Google Gears。其实再说细点,浏览WEB的历史记录也算是本地存储的一种方式。到目前为止,HTML5本地存储方式已经获得了广泛的支持,其中支持的浏览器包括:IE 8+、FF 3.5+、Safari 4+、Chrome 4+、Opera 10.5+,手机平台包括iPhone 2+和Android 2+。最新的HTML5本地存储规范文档,可以在线查看
HTML5本地存储的前身就是Cookie,通过使用localStorage对象将WEB数据持久留存在本地。相比较而言,HTML5本地存储中每个域的存储大小默认是5M,比起Cookie的4K要大的多。而且存储和读取数据的代码极为简练:
那么现在我们是否可以简单的认为,HTML5存储已经可以代替Cookie存储了呢?还有这种新的存储方式在实际应用中带来了哪些新的安全风险呢?带着这些疑问我们来进行下面的讨论。
(1) 是否可以代替Cookie
浏览器使用Cookie进行身份验证已经好多年,既然现在localStorage存储空间那么大,是否可以把身份验证的数据直接移植过来呢?目前来看,把身份验证数据使用localStorage进行存储还不太成熟。我们知道,通常可以使用XSS漏洞来获取到Cookie,然后用这个Cookie进行身份验证登录。后来为了防止通过XSS获取Cookie数据,浏览器支持了使用HTTPONLY来保护Cookie不被XSS攻击获取到。而目前localStorage存储没有对XSS攻击有任何抵御机制,一旦出现XSS漏洞,那么存储在localStorage里的数据就极易被获取到。
如果一个网站存在XSS漏洞,那么攻击者注入如下代码,就可以获取使用localStorage存储在本地的所有信息。
攻击者也可以简单的使用localStorage.removeItem(key)和localStorage.clear()对存储数据进行清空。
(2) 不要存储敏感信息
从(1)中知道,从远程攻击角度来看,localStorage存储的数据容易被XSS攻击获取,所以不宜把身份验证信息或敏感信息用localStorage存储。而从本地攻击角度来看, localStorage自身的存储方式和存储时效并不宜存储敏感信息。
五大浏览器现在都已经支持以localStorage方式进行存储,其中Chrome,Opera,Safari这三款浏览器中都有了查看本地存储的功能模块。但是不同浏览器对localStorage存储方式还是略有不同的。以下是五大浏览器localStorage存储方式:
通过上面的描述可以看出,除了Opera浏览器采用BASE64加密外(BASE64也是可以轻松解密的),其他浏览器均采用明文存储数据。
另一方面,在数据存储的时效上,localStorage并不会像Cookie那样可以设置数据存活的时限,只要用户不主动删除,localStorage存储的数据将会永久存在。
根据以上对存储方式和存储时效的分析,建议不要使用localStorage方式存储敏感信息,那怕这些信息进行过加密。
(3) 严格过滤输入输出
对于本地存储,为了方便加载数据,常常会把数据存储在本地,等再次加载时,直接从本地读取数据显示在网页上。在某些情况下,在localStorage存储中写入或读取数据的时候,如果数据没有经过输入输出严格过滤,那么这些数据极可能被作为HTML代码进行解析,从而产生XSS攻击。
Twitter就发生过localStorage XSS漏洞。此漏洞触发的条件是,在Twitter的个人主页上执行以下存储代码后,每次再打开个人主页时就会弹出/xss/框。
从这段代码可以看出,Twitter会使用localStorage方法把一些个人数据存储到本地,每次加载个人主页面的时候就会从本地存储获取数据,然后由于Twitter忽略了对去除数据的严格过滤,导致存储的代码会被当作HMTL编码执行,进而发生跨站攻击。
有关Twitter localStorage XSS 漏洞详的细信息可以查看: wooyun-2010-03075。虽然Twitter这个漏洞利用起来非常困难,但它再一次告诉我们:本着一切输入输出都是有害的原则,要对数据进行严格的输入输出过滤。
(4) 容易遭受跨目录攻击
localStroage存储方式不会像Cookie存储一样可以指定域中的路径,在localStroage存储方式中没有域路径的概念。也就是说,如果同一个域下的任意路径存在XSS漏洞,整个域下存储的数据在知道存储名称的情况下都可以被获取到。
假设下面两个链接是使用localStorage来存储数据:
用户xisigr和xhack各自的blog链接虽然属于同一个域,但却有不同的路径,一个路径为xisigr,另一个路径为xhack。假设xisigr用户发现自己的路径下存在存储型XSS漏洞,那么就可以在自己的blog中加入获取数据代码,其中核心代码为localStorage.getItem(“name”)。xhack用户并不需要登录blog,他只要访问,本地存储数据就会被获取到。
(5) 容易遭受DNS欺骗攻击
Google在没有使用HTML5本地存储前,是使用Google Gears方式来进行本地存储的。那时Google Gears就遭到过DNS欺骗攻击。Google Gears支持离线存储,可以把Gmail,WordPresss这样的网站数据以SQLite数据库的形式存储下来,以后用户就可以对存储的网站数据进行离线读取或删除操作。如果攻击者发动DNS欺骗攻击,那么就可以注入本地数据库,获取数据或者留下永久的后门,造成对用户持久的危害。Google Gears所遭受的DNS欺骗攻击方式在HTML5本地存储上也是同样有效的。
(6) 恶意代码栖息的温床
在第六点中给出“恶意代码栖息的温床”这个小标题有些夸大的效果。其实这里想说的是,HTML5本地存储在空间上和时间上都将成为今后存储的趋势,料想“恶意代码们”自然会大雁南飞转移栖息到这张温床上。
那么,何为HTML5本地存储的空间和时间呢?空间这里指的是存储空间,比起Cookie 4K空间的微小来说,HTML5的localStroage方法默认就可以使浏览器存储5M空间可以说是博大,而Safari浏览器可以支持到500M更加让HTML5存储霸气外露。时间上,随着HTML5技术日渐成熟,除了各大浏览器厂商争先在自己的产品中支持HTML5外,一些大应用软件厂商也对其信赖有加。比如2011年11月Adobe宣布放弃手机上的FLASH, 而由HTML5全面取而代之。随着时间的推移,HTML5大步流星的前行速度也会越来越快,也会使得用到HTML5本地存储的应用会越来越多。
上面从理论上分析了 “恶意代码栖息的温床”的可能性。而从实际技术上的可行性也非常简单。下面是在本地留后门的核心代码:
以上分析,均出自天融信TopLAB前沿安全实验室的研究,希望借此文让HTML5的本地存储安全问题得到大家的广泛重视。HTML5非常精彩,但也存在风险,我们要做的工作还很多。
程序员需要具备哪些东西?
程序员必须要了解的web安全
1.简述
互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。
1.1什么是安全?
字典的解释是指没有受到威胁、没有危险、危害、损失。
1.2什么情况下会产生安全问题?
类似我们在机场,火车站里面,乘客开始上车之前,都会有一个必要的程序:安全检查。如果没有安全检查我们就会产生我们所谓的安全问题。在安全检查中我们会检查乘客身上是否携带了打火机,可燃液体等危险物品。
从上面我们看出为什么我们会有安全检查呢?归根结底还是信任问题。因为我们的信任关系被破坏,从而产生了安全问题。
1.3怎么进行有效的安全评估?
一个安全评估过程,可以简单地划分为4个阶段:资产等级划分,威胁分析,风险分析,确认解决方案。
资产等级划分:明确我们目标是什么,要保护什么。互联网安全的核心问题,其实是数据安全问题。用户的数据也就是我们需要保护的。
威胁分析:找到所有可能造成危害的来源,一般采用头脑风暴列举所有的情况。
风险分析:预估造成的损失大小。
确认解决安全方案:安全评估的产出物,就是确认安全解决方案。解决方案一定要有针对性,这种针对性是由资产等级划分,威胁分析,风险分析,确认解决方案。
2.浏览器安全
近年来随着互联网的发展,人们发现浏览器才是互联网最大的入口,绝大多数用户使用互联网的工具是浏览器。因此浏览器市场的竞争也日趋白热化。浏览器安全在这种激烈竞争的环境中被越来越多的人所重视。
2.1同源策略
浏览器的安全都是以同源为基础,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。
浏览器的同源策略,限制了来自不同源的“document”或脚本,对当前"document"读取或设置某些属性。
这一策略很重要,试想一下如果没有同源策略,可能a.com的一段JS脚本,在b.com未曾加载此脚本时,也可以随意涂改b.com的页面。为了不让浏览器的页面行为发生混乱,浏览器提出了“Origin”这一概念,来自不同Origin的对象无法互相干扰。
影响“源”的因素有:host,子域名,端口,协议。
2.2恶意网址拦截
恶意网址拦截的工作原理很简单,一般都是浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网时访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面。
3.跨站脚本攻击
跨站脚本攻击(XSS)是客户端脚本安全中的头号大敌。
XSS:跨站脚本攻击,英文名称是Cross Site Script,本来缩写是CSS,为了和层叠样式的CSS有所区别,所以在安全领域叫“XSS”。
3.1XSS攻击
XSS攻击,通常指黑客通过“HTML注入”篡改可网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。举个例子:某个黑客发表了一篇文章其中包含了恶意的JS代码,所有访问这篇文章的人都会执行这段JS代码,这样就完成XSS攻击。
3.2反射型XSS
反射型XSS只是简单地把用户输入的数据反射给浏览器。也就是说,黑客往往需要引诱用户点击一个而已连接,才能攻击成功
3.3存储型XSS
存储型会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。黑客把恶意的脚本保存到用户的服务器端,所以这种攻击就是存储型,理论上来说,它存在的时间是比较长的。
3.4 XSS的防御
XSS的防御是复杂的。
3.4.1 HttpOnly
HttpOnly最早是由微软提出,并在IE6中实现的,至今已经逐渐成为了一个标准。浏览器将禁止页面的JS访问带有HttpOnly属性的Cookie。
其实严格地说,HttpOnly并非为了对抗XSS——HttpOnly解决的是XSS后的Cookie劫持攻击。HttpOnly现在已经基本支持各种浏览器,但是HttpOnly只是有助于缓解XSS攻击,但仍然需要其他能够解决XSS漏洞的方案。
3.4.2 输入检查
在XSS的防御上,输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如,等等。如果发现这些字符,则将字符过滤或者编码。这种输入检查的方式,可以叫“XSS Filter”。互联网上于很多开源的“XSS Filter”的实现。
XSS Filter在用户提交数据时获取变量,并进行XSS检查;但此时用户数据并没有结合渲染页面的HTML代码,因此XSS Filter对语境的理解并不完整。甚至有可能用户输入13,直接会把符号给过滤掉,所以一个好的XSSFilter是比较重要的。
3.4.3输出检查
一般来说,除了富文本的书除外,在变量输出到HTML页面时,可以使用编码火转移的方式来防御XSS攻击。和输入检查差不多。
SpringMVC如何有效的防止XSS注入?
在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原
在显示的时候对非法字符进行转义
如果项目还处在起步阶段,建议使用第二种,直接使用jstl的c:out标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。
附:Javascript方法:
String.prototype.escapeHTML = function () {
return this.replace(//g, ‘’).replace(//g, ‘’).replace(//g, ‘’).replace(/”/g, ‘"’);}
如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils
public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() { super(); }
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {super();this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;}@Overridepublic void setAsText(String text) {
if (text == null) {
setValue(null);} else {String value = text;
if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); }
if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); }
if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }}@Overridepublic String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”; }}
在上面我们做了一个EscapeEditor,下面还要将这个Editor和Spring的Controller绑定,使服务器端接收到数据之后能够自动转移特殊字符。
下面我们在@Controller中注册@InitBinder
@InitBinder
public void initBinder(WebDataBinder binder) {
这个方法可以直接放到abstract Controller类中,这样子每个Controller实例都能够拥有该方法。
电脑假死是什么原因?
首先 开启 Administrator 用户 删除其他用户!这个应该都会吧!(不过这可做,也可不做) TFz k5
1.“以管理员身份运行,所有程序→附件→命令提示符”,右击选择“以管理员身份运行”, V`1x![\
进入命令提示符后,手工输入“powercfg -h off” 。。 bHXoZix
2.删除备份,关闭系统保护(计算机右键属性--高级管理设置--系统保护) r-Y7wM`TZ
3.转移虚拟内存(计算机右键属性--高级管理设置--高级--性能-设置-高级-更改) !"'6$"U\K
4.转移“用户的文件”(桌面双击 Administrator(用户文件夹)文件夹,在这里推荐转移4个系统文件夹 ,4;'s
桌面,收藏夹,我的桌面,我的文档。右键要转移的项目属性--位置 X:\Users\Administrator 即可) abS3hf
减肥攻略(删文件不删功能、简化优化系统不简优化性能) 7`^=Ie%(K
不浪费口水,直接放有效地址 8xd
1.C:\Windows\Web\Wall*** (Windows自带墙纸)推荐转移 aN!,\D
2.C:\Windows\System32\DriverStore\FileRepository 下 J gV4-B 0
搜索输入 ati*.inf (14.6M) nv*.inf(94.9M) (A卡用户删N、N卡用户删A,- -|||) C^: {y
搜索输入 mdm*.inf (21.6M) 现在早已没人用的东西 删 kUr/*an
搜索输入 prn*.inf (781M) prn 开头的全部都是打印机驱动,相信大多数人都是用不上的。 qi"[^M
就是有打印机,买的时候也会带有驱动,删除它! D z[ ,;
注意:prnms001.inf/prnoc001.inf/prnms002.inf 这三个并不是打印机驱动,建议保留! L=WKqRa4
3.C:\Boot (13.3M) 这个里面是不同语言的Windows启动界面,除zh-CN外均可删除 @4Q /J$
4.C:\perflogs\System\Diagnostics (9.39M) 这个是系统测试之后的测试记录文件存放处 删 Vl'rO _?t
5.C:\Windows\Downloaded Installations 有一些程序(Dreamweaver。。) nB/`~_9
安装的时候会把安装文件解压至此文件夹里面。可以安全删除。几十M到几百M不等。 9! yDZs
6.C:\Windows\Help (66.7M) 全部咔嚓。。 相信没有小白同志 看这个了吧。。 6y"T;.FAo
7. C:\Windows\IME\IMESC5 您自定吧,反正我是用第三方输入法的。 LKZv#b[h
微软拼音输入法(74.5M)可留 oSx'_dc
C:\Windows\IME\IMEJP10 Z!4B=?(
日文输入法(37.8M) 删 \FnR'ne
C:\Windows\IME\imekr8 tg9{(_ t/W
韩文输入法(2.86M) 删 sHOBT,B
C:\Windows\IME\IMETC10 {s=c!08=
繁中输入法(21.6M) 删 HHOqJb{8S
C:\Windows\System32\IME 下 也会有这几项输入法!删除方法同上 AE Abny q
“C:\Windows\System32\IME\IMESC5” Ql,WKoj*
“C:\Windows\System32\IME\***X” x ]{c b/m
8. C:\Windows\Installer 下,已安装程序的卸载修改时所需程序,如果你删除了, Cn_r?1{W
有些程序卸载和修改就会有问题。 7dOpJjv?)
9.C:\Windows\winsxs 这个不能删除,但是可以压缩,压缩后大小为2.48G。节省空间近1G! cP{aBa
系统文件,总大小3.22G, anORoK.
C:\Windows\winsxs\Backup(备份文件,占用354MB); 删除 放心吧,用不到的。。 g'EPdE
10.C:\ProgramData s~c cx"HH
一些程序安装时会放一些文件到这里面,看需要删除, 3~LNz8Z*
里面的安装文件exe、msi,可以删除,但是有些是软件运行时需要的文件,不能乱删。 MFipXE!
11.C:\Program Files\Microsoft Games gOp81 )
系统自带游戏,不玩的可以删除掉,删除自带游戏的方法如下: 5JG`FRW!
开始-控制面板-程序-打开或关闭Windows功能,找到游戏,点加号展开,去掉你想删除的游戏前面的对勾 g3Ul'QJ
,然后确定,即可,同时可以关闭的功能有Tablet PC可选组件/Windows DFS服务/打印服务/Windows传真和扫 BG6Lky/omz
描/Windows会议室/远程差分压缩,如需打开IIS,在这里打开Internet信息服务即可 ?iL-2I3*
以下 这些删不删看你了 }s8xr
C:\Program Files\Microsoft Games\Chess {#D=7LP
象棋高手(30.3M) @[Wf!8_
C:\Program Files\Microsoft Games\FreeCell },O7NSGo
空当接龙(690K) \\Z?v,XsS
C:\Program Files\Microsoft Games\Hearts VG*La' c
红心大战(687K) Mv:\T%]
C:\Program Files\Microsoft Games\inkball f+Fzpd?wS
墨球(1.2M) I}awembw g
C:\Program Files\Microsoft Games\Mahjong qr~zTBT] E
麻将高手(12.6M) BM87f:d
C:\Program Files\Microsoft Games\Minesweeper D"{%[;J
扫雷(4.96M) hz h3p[
C:\Program Files\Microsoft Games\Purble Place xSq+,b
厨房大赛(3囧M) -)DxF8B
C:\Program Files\Microsoft Games\Solitaire ?` 2z8uD/
纸牌(696K)
C:\Program Files\Microsoft Games\SpiderSolitaire
蜘蛛纸牌(697K) =$_
12. C:\Users\Public(删除)
所有用户公用文件夹,里面有一些示例图片、视频等,可以删除之(217M)
其中C:\Users\Public\Recorded TV\Sample Media为Windows Media Center的示例电视录制文件(143M),
C:\Users\Public\Music\Sample Music为示例音乐(59M),
修改注册表
加快Windows 7 系统开机速度
1)运行regedit进入注册表。
2)依次打开到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
3)在右边“EnablePrefetcher”主键,把它的默认值由3改为0.
4)从起计算机
修改注册表 加快Windows 7 系统关机速度
1)运行regedit进入注册表。
2)HKEY_CURRENT_USERControl\PanelDesktop”,把“AutoEndTasks”的键值设置为1即可。 3)
样也在“HKEY_CURRENT_USERControl PanelDesktop”下;最后一步再找到
“HKEY_LOCAL_MACHINESystemCurrentControlSetControl”,同样把WaitToKillServiceTi
meout设置为“4000”;
去掉菜单延迟
去掉菜单弹出时的延迟,可以在一定程度上加快window7。要修改的键值位置在
“HKEY_CURRENT_USERControl PanelDesktop”。修改其下的“MenuShowDelay”键,把 26=G%F 6
默认的400修改为0,按F5刷新注册表 重启即可生效。
缩短关闭应用程序与进程前的等待时间
与关闭服务前的等待时间类似, Windows Vista在强行关闭应用程序与进程前同样有一段等待该程序或进程 自行关闭的时间,只有超过该时限后,Windows 系统才会将其强行中止。因此,缩短默认关闭应用程序或进行等待时间,同样能够加快Windows 7的关机速度。设置方法同上面类似,在注册表中找到如下分支:HKEY_CURRENT_USER\Control Panel\Desktop
双击右侧面板中的 “WaitToKillAppTimeout” ,将其值从默认的 20000(单位同样为毫秒)修改为较小的5000或1000,
这样,Windows在发出关机指令后如果等待5秒或1秒仍未收到某个应用程序或进行的关闭信号,将弹出相应的警告信号,并询问用户是否强行中止
这是我刚才在在 梅兰网看见的 里面还有很多的 你自己去u搜搜吧!!