① 如何通过IP过滤防御DDoS攻击
DDoS攻击由来已久,但如此简单粗暴的攻击手法时至今日却依然有效,并已成为困扰各大网站稳定运营的“头号敌人”。
防DDoS攻击可别小瞧对抗其有效手段之一的IP过滤
利用IP过滤抵御DDoS攻击
今天,随着大量可连网智能设备的加速普及,这些智能设备被暴露出诸多的安全漏洞,甚至变成了DDoS攻击大军中的一员,就像此前将半个美国网络搞瘫的Mirai僵尸网络攻击一样。
不过,在Mirai源代码被蓄意公开之前,可连网智能设备被用于大规模DDoS攻击的情况并不多见。可是现在的情况在Mirai源代码公开后,显然已经发生了巨大变化,不法黑客掌控可联网设备的僵尸网络迅速拓张了其规模与攻击威力。这时一旦这些设备或网络受到危害并用于恶意目的,企业将无法进行有效的防护。
这时,企业可以如果部署有一个可以持续监测并主动过滤受僵尸网络控制IP地址的网关,通过与威胁情报联动,持续更新不良IP地址数据库,就会掌握哪些IP地址已经被僵尸网络所控制或被其他恶意软件入侵。
当来自这些恶意IP地址的流量抵达网关时,锐速云能够以高达10GB的线速自动过滤掉恶意流量,防止其到达防火墙,大大提升防火墙和相关安全解决方案的效率。这样将极大减少防火墙等周边保护工具和网络自身的工作负载,将企业遭受攻击的风险降至最低。
在抵御DDoS攻击时,利用这种IP过滤的方式,至少能够将1/3的恶意流量进行过滤,这可为企业网络防护节省出大量的投资成本,并提升网络的整体防御能力。
而且通过过滤、拦截恶意IP地址还可阻止企业网络中那些已遭入侵的设备与黑客的指挥与控制中心进行通讯,防止这些设备被用作其他DDoS攻击的帮凶,也能及时遏制潜在的数据泄露。
② 如何避免路由器攻击九大方法
也就是说任何人都可以在其局域网上使用且仅能用于内部的IP地址。这些特定的IP地址是不允许用在公网上的。但在将路由器用于互联网上的通信时,它还使用另外一个不同的IP地址,即公网IP地址。路由器的管理员无法控制公网IP地址,它是由把路由器连接到互联网的ISP提供的。 这样一来,除非做到公网IP仅能被互联网上的计算机找到,而私有IP地址仅能被局域网上的计算机看到,这样才能够筑起一道屏障,否则黑客们便可能登录进路由器,进而危及到整个局域网的设备。 就像网络操作系统一样,路由器操作系统也需要更新,以便纠正编程错误、软件瑕疵和缓存溢出的问题。要经常向你的路由器厂商查询当前的更新和操作系统的版本。 2. 修改默认口令:据卡内基梅隆大学的计算机应急反应小组称,80%的安全事件都是由于较弱或者默认的口令引起的。避免使用普通的口令,并且使用大小写字母混合的方式作为更强大的口令规则。3. 禁用HTTP设置和SNMP(简单网络管理协议): 你的路由器的HTTP设置部分对于一个繁忙的网络管理员来说是很容易设置的。但是,这对路由器来说也是一个安全问题。如果你的路由器有一个命令行设置,禁用HTTP方式并且使用这种设置方式。如果你没有使用你的路由器上的SNMP,那么你就不需要启用这个功能。思科路由器存在一个容易遭受GRE隧道攻击的SNMP安全漏洞。 4. 封锁ICMP(互联网控制消息协议)ping请求: ping和其它ICMP功能对于网络管理员和黑客都是非常有用的工具。黑客能够利用你的路由器上启用的ICMP功能找出可用来攻击你的网络的信息。 5. 禁用来自互联网的telnet命令: 在大多数情况下,你不需要来自互联网接口的主动的telnet会话。如果从内部访问你的路由器设置会更安全一些。 6. 禁用IP定向广播: IP定向广播能够允许对你的设备实施拒绝服务攻击。一台路由器的内存和CPU难以承受太多的请求。这种结果会导致缓存溢出。 7. 禁用IP路由和IP重新定向: 重新定向允许数据包从一个接口进来然后从另一个接口出去。你不需要把精心设计的数据包重新定向到专用的内部网路。 8. 包过滤: 包过滤仅传递你允许进入你的网络的那种数据包。许多公司仅允许使用80端口(HTTP)和110/25端口(电子邮件)。此外,你可以封锁和允许IP地址和范围。9. 禁用不必要的服务: 无论是路由器、服务器和工作站上的不必要的服务都要禁用。思科的设备通过网络操作系统默认地提供一些小的服务,如echo(回波), chargen(字符发生器协议)和discard(抛弃协议)。这些服务,特别是它们的UDP服务,很少用于合法的目的。但是,这些服务能够用来实施拒绝服务攻击和其它攻击。包过滤可以防止这些攻击。
③ DDOS几种常见攻击方式的原理及解决办法
题主是想问,如果遇到DDOS攻击,应该如何解决吧?
DDOS攻击,叫做分布式拒绝服务攻击,指通过过大的各种正常流量,大量占用服务器处理资源或网络资源,从而使用户无法正常的连接到服务器,达成访问。当然,DDOS攻击只是一种总的攻击方式,最终的结果就是让用户无法正常访问相应服务。
PC当前可以正常访问server,并且server对PC提供服务需要占用上行带宽1M。那么server理论上可以同时对100名正常用户提供服务。
此时hacker希望针对server进行DDOS攻击,那为了不暴露自己的身份,hacker不会使用自己的IP进行攻击,他会各种世界各地的肉鸡,各种各样的IP对server进行攻击,但是这种攻击并不是向server注入什么病毒木马,而是正常的访问server的服务,但是他们并不好好访问,而是登录之后立刻下线,然后再次登录,再次下线,通过这样的方式来占用server的上行带宽以及server连接数,导致正常的PC无法进行正常访问,这个就是DDOS攻击的模式,当然,DDOS攻击有很多种不同的方式,比如带宽占用、TCP饥饿攻击、ping of death等,这里就不一一列举了。
那么如何解决DDOS攻击呢?
在这里列举几种常见的解决方式:
1、硬件防火墙
现在很多的下一代防火墙都带有DDOS攻击防治的功能,在设备出口处设置阈值针对于业务类型的阈值,比如门户型网站服务器,用户登录之后需要做的只是一些图片、文档的查阅,每一个IP向服务器发送的流量是很有限的,可能只有几十K的速率,那这时我们就可以针对于每一个访问IP设置一个阈值,如果一个IP接入服务器的速率超过100K,就将其暂时放入黑名单中,拒绝其后续的访问,然后在一段时间之后进行黑名单解除。这样的话,就可以避免大部分的DDOS攻击。
2、无防火墙的环境
如果企业没有防火墙,只有路由器做网关,如何防治DDOS?这时要基于攻击方式来做区分:
如果是用登录连接数作为攻击方式的话,我们可以在服务器上,针对于同一IP在一段时间内进行登录次数进行阈值的设置,例如,1分钟之后同一个IP登录超过5次,则暂时将该IP放入黑名单,拒绝其访问,一段时间之后再解禁即可。
如果是用流量拥堵的方式来进行攻击的话,则可以通过更换服务器IP的方式来暂时解决,然后在上游设备上将原有IP地址的下一跳置为空,也就是做一条空路由,这样就可以暂时解决DDOS流量攻击,当然,这是治标不治本的,最好的办法就是增加带宽,或者做服务器的负载均衡。
总而言之,DDOS作为当前internet中最毒瘤的攻击方式,几乎无法完全避免,毕竟你有张良计,我有过墙梯,如果攻击方有钱,无限制的攻击你,你其实也没有太好的办法,所以,建议通过硬件防火墙预防DDOS攻击,有些钱还是不能省的。
④ 如何阻止DDOS攻击
步骤/方法
(1)定期扫描
要定期扫描现有的网络主节点,清查可能存在的安全漏洞,对新出现的漏洞及时进行清理。骨干节点的计算机因为具有较高的带宽,是黑客利用的最佳位置,因此 对这些主机本身加强主机安全是非常重要的。而且连接到网络主节点的都是服务器级别的计算机,所以定期扫描漏洞就变得更加重要了。
(2)在骨干节点配置防火墙
防火墙本身能抵御Ddos攻击和其他一些攻击。在发现受到攻击的时候,可以将攻击导向一些牺牲主机,这样可以保护真正的主机不被攻击。当然导向的这些牺牲主机可以选择不重要的,或者是linux以及unix等漏洞少和天生防范攻击优秀的系统。
(3)用足够的机器承受黑客攻击
这是一种较为理想的应对策略。如果用户拥有足够的容量和足够的资源给黑客攻击,在它不断访问用户、夺取用户资源之时,自己的能量也在逐渐耗失,或许未等用户被攻死,黑客已无力支招儿了。不过此方法需要投入的资金比较多,平时大多数设备处于空闲状态,和目前中小企业网络实际运行情况不相符。
(4)充分利用网络设备保护网络资源
所谓网络设备是指路由器、防火墙等负载均衡设备,它们可将网络有效地保护起来。当网络被攻击时最先死掉的是路由器,但其他机器没有死。死掉的路由器经重 启后会恢复正常,而且启动起来还很快,没有什么损失。若其他服务器死掉,其中的数据会丢失,而且重启服务器又是一个漫长的过程。特别是一个公司使用了负载 均衡设备,这样当一台路由器被攻击死机时,另一台将马上工作。从而最大程度的削减了Ddos的攻击。
(5)过滤不必要的服务和端口
可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。比如Cisco公司的 CEF(Cisco Express Forwarding)可以针对封包Source IP和Routing Table做比较,并加以过滤。只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。
(6)检查访问者的来源
使用Unicast Reverse Path Forwarding等通过反向路由器查询的方法检查访问者的IP地址是否是真,如果是假的,它将予以屏蔽。许多黑客攻击常采用假IP地址方式迷惑用户, 很难查出它来自何处。因此,利用Unicast Reverse Path Forwarding可减少假IP地址的出现,有助于提高网络安全性。
(7)过滤所有RFC1918 IP地址
RFC1918 IP地址是内部网的IP地址,像10.0.0.0、192.168.0.0 和172.16.0.0,它们不是某个网段的固定的IP地址,而是Internet内部保留的区域性IP地址,应该把它们过滤掉。此方法并不是过滤内部员工的访问,而是将攻击时伪造的大量虚假内部IP过滤,这样也可以减轻Ddos的攻击。
(8)限制SYN/ICMP流量
用户应在路由器上配置SYN/ICMP的最大流量来限制SYN/ICMP封包所能占有的最高频宽,这样,当出现大量的超过所限定的SYN/ICMP流量 时,说明不是正常的网络访问,而是有黑客入侵。早期通过限制SYN/ICMP流量是最好的防范DOS的方法,虽然目前该方法对于Ddos效果不太明显了, 不过仍然能够起到一定的作用。
⑤ 如何有效的防止DDOS攻击
有效的防止DDOS攻击的方法:
1、采用高性能的网络设备
首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。
2、尽量避免NAT的使用
无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间。
3、充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的ddos攻击,当前至少要选择100M的共享带宽。
(5)方法过滤攻击扩展阅读
DDOS攻击方式
1、SYN Flood攻击
SYN Flood攻击是当前网络上最为常见的DDoS攻击,它利用了TCP协议实现上的一个缺陷。通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。
2、UDP Flood攻击
UDP Flood是日渐猖厥的流量型DDoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。由于UDP协议是一种无连接的服务,在UDP Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包。
3、ICMP Flood攻击
ICMP Flood攻击属于流量型的攻击方式,是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤ICMP报文。因此ICMP Flood出现的频度较低。
4、Connection Flood攻击
Connection Flood是典型的利用小流量冲击大带宽网络服务的攻击方式,这种攻击的原理是利用真实的IP地址向服务器发起大量的连接。并且建立连接之后很长时间不释放,占用服务器的资源,造成服务器上残余连接(WAIT状态)过多,效率降低,甚至资源耗尽,无法响应其他客户所发起的链接。
⑥ 如何防范SQL注入式攻击
SQL注入攻击的危害很大,而且防火墙很难对攻击行为进行拦截,主要的SQL注入攻击防范方法,具体有以下几个方面。
1、分级管理
对用户进行分级管理,严格控制用户的权限,对于普通用户,禁止给予数据库建立、删除、修改等相关权限,只有系统管理员才具有增、删、改、查的权限。
2、参数传值
程序员在书写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量。从而抑制SQL注入。数据输入不能直接嵌入到查询语句中。同时要过滤输入的内容,过滤掉不安全的输入数据。或者采用参数传值的方式传递输入变量,这样可以最大程度防范SQL注入攻击。
3、基础过滤与二次过滤
SQL注入攻击前,入侵者通过修改参数提交and等特殊字符,判断是否存在漏洞,然后通过select、update等各种字符编写SQL注入语句。因此防范SQL注入要对用户输入进行检查,确保数据输入的安全性,在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤,从而有效防止SQL注入。
当然危险字符有很多,在获取用户输入提交参数时,首先要进行基础过滤,然后根据程序的功能及用户输入的可能性进行二次过滤,以确保系统的安全性。
4、使用安全参数
SQL数据库为了有效抑制SQL注入攻击的影响。在进行SQLServer数据库设计时设置了专门的SQL安全参数。在程序编写时应尽量使用安全参数来杜绝注入式攻击,从而确保系统的安全性。
5、漏洞扫描
为了更有效地防范SQL注入攻击,作为系统管理除了设置有效的防范措施,更应该及时发现系统存在SQL攻击安全漏洞。系统管理员可以采购一些SQL漏洞扫描工具,通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞。
6、多层验证
现在的网站系统功能越来越庞大复杂。为确保系统的安全,访问者的数据输入必须经过严格的验证才能进入系统,验证没通过的输入直接被拒绝访问数据库,并且向上层系统发出错误提示信息。同时在客户端访问程序中验证访问者的相关输入信息,从而更有效的防止简单的SQL注入。但是如果多层验证中的下层如果验证数据通过,那么绕过客户端的攻击者就能够随意访问系统。因此在进行多层验证时,要每个层次相互配合,只有在客户端和系统端都进行有效的验证防护,才能更好地防范SQL注入攻击。
7、数据库信息加密
传统的加解密方法大致分为三种:对称加密、非对称加密、不可逆加密。
⑦ js用什么函数过滤非法字符防止跨站脚本攻击
test
如:抄<input type="text" id="txtceshi" /><input type="button" onclick="yanzheng()" value="ceshi" />
<script type="text/javascript">
function yanzheng() {
var ce = txtceshi.value;//获取文本框的值
var ze = /[^0-9]+/; //只能是数字,这里可以在网上找到一些正则替换成你想要的表达式
if (ze.test(ce)) {
alert("数据不合法!");
}
}
</script>
⑧ 有几种防止远程桌面被人攻击的方法
必须禁止的服务
1.NetMeeting Remote Desktop Sharing:允许受权的用户通过NetMeeting在网络上互相访问对方。这项服务对大多数个人用户并没有多大用处,况且服务的开启还会带来安全问题,因为上网时该服务会把用户名以明文形式发送到连接它的客户端,黑客的嗅探程序很容易就能探测到这些账户信息。
2.Universal Plug and Play Device Host:此服务是为通用的即插即用设备提供支持。这项服务存在一个安全漏洞,运行此服务的计算机很容易受到攻击。攻击者只要向某个拥有多台Win XP系统的网络发送一个虚假的UDP包,就可能会造成这些Win XP主机对指定的主机进行攻击(DDoS)。另外如果向该系统1900端口发送一个UDP包,令“Location”域的地址指向另一系统的chargen端口,就有可能使系统陷入一个死循环,消耗掉系统的所有资源(需要安装硬件时需手动开启)。
3.Messenger:俗称信使服务,电脑用户在局域网内可以利用它进行资料交换(传输客户端和服务器之间的Net Send和Alerter服务消息,此服务与Windows Messenger无关。如果服务停止,Alerter消息不会被传输)。这是一个危险而讨厌的服务,Messenger服务基本上是用在企业的网络管理上,但是垃圾邮件和垃圾广告厂商,也经常利用该服务发布弹出式广告,标题为“信使服务”。而且这项服务有漏洞,MSBlast和Slammer病毒就是用它来进行快速传播的。
4.Terminal Services:允许多位用户连接并控制一台机器,并且在远程计算机上显示桌面和应用程序。如果你不使用Win XP的远程控制功能,可以禁止它。
5.Remote Registry:使远程用户能修改此计算机上的注册表设置。注册表可以说是系统的核心内容,一般用户都不建议自行更改,更何况要让别人远程修改,所以这项服务是极其危险的。
6.Fast User Switching Compatibility:在多用户下为需要协助的应用程序提供管理。Windows XP允许在一台电脑上进行多用户之间的快速切换,但是这项功能有个漏洞,当你点击“开始→注销→快速切换”,在传统登录方式下重复输入一个用户名进行登录时,系统会认为是暴力破解,而锁定所有非管理员账户。如果不经常使用,可以禁止该服务。或者在“控制面板→用户账户→更改用户登录或注销方式”中取消“使用快速用户切换”。
7.Telnet:允许远程用户登录到此计算机并运行程序,并支持多种 TCP/IP Telnet客户,包括基于 UNIX 和 Windows 的计算机。又一个危险的服务,如果启动,远程用户就可以登录、访问本地的程序,甚至可以用它来修改你的ADSL Modem等的网络设置。除非你是网络专业人员或电脑不作为服务器使用,否则一定要禁止它。
8.Performance Logs And Alerts:收集本地或远程计算机基于预先配置的日程参数的性能数据,然后将此数据写入日志或触发警报。为了防止被远程计算机搜索数据,坚决禁止它。
9.Remote Desktop Help Session Manager:如果此服务被终止,远程协助将不可用。
10.TCP/IP NetBIOS Helper:NetBIOS在Win 9X下就经常有人用它来进行攻击,对于不需要文件和打印共享的用户,此项也可以禁用。
可以禁止的服务
以上十项服务是对安全威胁较大的服务,普通用户一定要禁用它。另外还有一些普通用户可以按需求禁止的服务:
1.Alerter:通知所选用户和计算机有关系统管理级警报。如果你未连上局域网且不需要管理警报,则可将其禁止。
2.Indexing Service:本地和远程计算机上文件的索引内容和属性,提供文件快速访问。这项服务对个人用户没有多大用处。
3.Application Layer Gateway Service:为Internet连接共享和Internet连接防火墙提供第三方协议插件的支持。如果你没有启用Internet连接共享或Windows XP的内置防火墙,可以禁止该服务。
4.Uninterruptible Power Supply:管理连接到计算机的不间断电源,没有安装UPS的用户可以禁用。
5.Print Spooler:将文件加载到内存中以便稍后打印。如果没装打印机,可以禁用。
6.Smart Card:管理计算机对智能卡的读取访问。基本上用不上,可以禁用。
7.Ssdp Discovery Service:启动家庭网络上的upnp设备自动发现。具有upnp的设备还不多,对于我们来说这个服务是没有用的。
8.Automatic Updates:自动从Windows Update网络更新补丁。利用Windows Update功能进行升级,速度太慢,建议大家通过多线程下载工具下载补丁到本地硬盘后,再进行升级。
9.Clipbook:启用“剪贴板查看器”储存信息并与远程计算机共享。如果不想与远程计算机进行信息共享,就可以禁止。
10.Imapi Cd-burning Com Service:用Imapi管理CD录制,虽然Win XP中内置了此功能,但是我们大多会选择专业刻录软件,另外如果没有安装刻录机的话,也可以禁止该服务。
11.Workstation:创建和维护到远程服务的客户端网络连接。如果服务停止,这些连接都将不可用。
12.Error Reporting Service:服务和应用程序在非标准环境下运行时,允许错误报告。如果你不是专业人员,这个错误报告对你来说根本没用。
参考资料:http://www.jd-bbs.com/archiver/?tid-957720.html
⑨ 如何防止xss攻击,需要过滤什么
XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
一、HttpOnly防止劫取Cookie
HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。
我们来看下网络有没有使用。
未登录时的Cookie信息
可以看到,所有Cookie都没有设置HttpOnly,现在我登录下
发现在个叫BDUSS的Cookie设置了HttpOnly。可以猜测此Cookie用于认证。
下面我用PHP来实现下:
<?php
header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly",false);
setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);
setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);
?>
<script>
alert(document.cookie);
</script>
js只能读到没有HttpOnly标识的Cookie
二、输入检查
输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。
例如网站注册经常用户名只允许字母和数字的组合,或者邮箱电话,我们会在前端用js进行检查,但在服务器端代码必须再次检查一次,因为客户端的检查很容易绕过。
网上有许多开源的“XSS Filter”的实现,但是它们应该选择性的使用,因为它们对特殊字符的过滤可能并非数据的本意。比如一款php的lib_filter类:
$filter = new lib_filter();
echo $filter->go('1+1>1');
它输出的是1,这大大歪曲了数据的语义,因此什么情况应该对哪些字符进行过滤应该适情况而定。
三、输出检查
大多人都知道输入需要做检查,但却忽略了输出检查。
1、在HTML标签中输出
如代码:
<?php
$a = "<script>alert(1);</script>";
$b = "<img src=# onerror=alert(2) />";
?>
<div><?=$b?></div>
<a href="#"><?=$a?></a>
这样客户端受到xss攻击,解决方法就是对变量使用htmlEncode,php中的函数是htmlentities
<?php
$a = "<script>alert(1);</script>";
$b = "<img src=# onerror=alert(2) />";
?>
<div><?=htmlentities($b)?></div>
<a href="#"><?=htmlentities($a)?></a>
2、在HTML属性中输出
<div id="div" name ="$var"></div>
这种情况防御也是使用htmlEncode
在owasp-php中实现:
$immune_htmlattr = array(',', '.', '-', '_');
$this->htmlEntityCodec->encode($this->immune_htmlattr, "\"><script>123123;</script><\"");
3、在<script>标签中输出
如代码:
<?php
$c = "1;alert(3)";
?>
<script type="text/javascript">
var c = <?=$c?>;
</script>
这样xss又生效了。首先js变量输出一定要在引号内,但是如果我$c = "\"abc;alert(123);//",你会发现放引号中都没用,自带的函数都不能很好的满足。这时只能使用一个更加严格的JavascriptEncode函数来保证安全——除数字、字母外的所有字符,都使用十六进制"\xHH"的方式进行编码。这里我采用开源的owasp-php方法来实现
$immune = array("");
echo $this->javascriptCodec->encode($immune, "\"abc;alert(123);//");
最后输出\x22abc\x3Balert\x28123\x29\x3B\x2F\x2F
4、在事件中输出
<a href="#" onclick="funcA('$var')" >test</a>
可能攻击方法
<a href="#" onclick="funcA('');alter(/xss/;//')">test</a>
这个其实就是写在<script>中,所以跟3防御相同
5、在css中输出
在owasp-php中实现:
$immune = array("");
$this->cssCodec->encode($immune, 'background:expression(window.x?0:(alert(/XSS/),window.x=1));');
6、在地址中输出
先确保变量是否是"http"开头,然后再使用js的encodeURI或encodeURIComponent方法。
在owasp-php中实现:
$instance = ESAPI::getEncoder();
$instance->encodeForURL(‘url’);
四、处理富文体
就像我写这篇博客,我几乎可以随意输入任意字符,插入图片,插入代码,还可以设置样式。这个时要做的就是设置好白名单,严格控制标签。能自定义 css件麻烦事,因此最好使用成熟的开源框架来检查。php可以使用htmlpurify
五、防御DOM Based XSS
DOM Based XSS是从javascript中输出数据到HTML页面里。
<script>
var x = "$var";
document.write("<a href='"+x+"'>test</a>");
</script>
按照三中输出检查用到的防御方法,在x赋值时进行编码,但是当document.write输出数据到HTML时,浏览器重新渲染了页面,会将x进行解码,因此这么一来,相当于没有编码,而产生xss。
防御方法:首先,还是应该做输出防御编码的,但后面如果是输出到事件或脚本,则要再做一次javascriptEncode编码,如果是输出到HTML内容或属性,则要做一次HTMLEncode。
会触发DOM Based XSS的地方有很多:
document.write()、document.writeln()、xxx.innerHTML=、xxx.outerHTML=、innerHTML.replace、document.attachEvent()、window.attachEvent()、document.location.replace()、document.location.assign()
⑩ 输入参数过滤可以预防以下哪些攻击
输入参数过滤可以预防以下哪些攻击()
A.SQL注入、跨站脚本、缓冲区溢出
B.SQL注入、跨站脚本、DNS毒药
C.SQL注入、跨站请求伪造、网络窃听
D.跨站请求伪造、跨站脚本、DNS毒药
答案:B