户外网站 整站下载,英语培训学校网站建设多少钱,巨量引擎广告投放平台登录入口,建设部网站1667号下载备注#xff1a;这是我在2017年在自己的网站上写的文章#xff0c;今天迁移过来。 昨天去参加了公司组织的一个关于网络安全的培训#xff0c;了解了很多关于网络安全方面的知识#xff0c;也才意识到网络安全是一项极其重要的领域。 本篇文章主要聊聊Web安全。不过我对于网…备注这是我在2017年在自己的网站上写的文章今天迁移过来。 昨天去参加了公司组织的一个关于网络安全的培训了解了很多关于网络安全方面的知识也才意识到网络安全是一项极其重要的领域。 本篇文章主要聊聊Web安全。不过我对于网络安全方面不是特别懂所以网络安全方面的大牛们可以忽略我的文章哈。 本文主要讲以下几种
DDos攻击XSSCSRFSQL注入 一、Ddos攻击 DDos攻击它的原理主要是利用触发大量的协议上允许的请求从而让你的服务器资源耗尽比如SYN_FLOODDNS_FLOOD还有HTTP连接的慢连接CC等等。 SYN_FLOOD syn 洪攻击攻击者伪造客户端不断向服务器发送建立TCP连接请求但发送完SYNC标志位建立请求之后不继续后续流程。服务器会不断回复ACK导致服务器端出现了大量了半开连接如果数量巨大导致服务器可能无法再继续正常处理请求。 洪攻击的缓解方式有多种。如果客户端ip不变就比较简单了如果是伪造的则比较麻烦了。可以增加服务器内部半连接队列大小可以定期删除半连接队列中最早的SYN。也可以在服务器之前设立一道墙比如Cloudflare 。对于初始的SYN请求不直接到达服务器而是由Cloudflare 完成 DNS_FLOODdns 洪攻击这个是对DNS服务器的攻击DNS服务器用来进行域名解析的DNS攻击就会向DNS服务器发送大量的请求导致DNS服务器无法正常进行域名解析。或者就算服务器本身可承受但由于大量请求过来可能导致服务器所在的网络运营商发现了流量异常超标已经影响了整个出口带宽运营商都会直接把你ip封掉。 不知道大家是否听说过2009年的暴风影音事件因为两家游戏公司恶意竞争一个公司恶意攻击另外一家公司网站导致DnsPod服务器受到Ddos攻击再加上当时著名的暴风影音使用了免费的DnsPod服务器也受到了影响那时的暴风今非昔比用户量巨大导致大量域名解析请求达到了电信的DNS服务器占用了典型机房的1/3的带宽于是乎被电信封掉了ip。这一封不要紧直接导致使用DnsPod解析的网站全部无法访问数量达到10万。有感兴趣的可以看看历史回顾很精彩DnsPod创始人很厉害叫吴洪声作为一个大专生靠着爱好和坚持搭建了DnsPod现在已经被腾讯收购了妥妥的人生赢家。 CC攻击这个就比较隐蔽了他是模拟正常用户发送大量请求一直到该网站的服务器资源被耗尽系统发生宕机。因为其请求是有效的是模拟正常用户请求的而且利用代理服务器会使得请求Ip请求头信息不断改变所以防范起来不是特别容易。 解决CC首先要识别CC。识别CC的手段包括 1、异常流量监测 如果监测到我们系统的流量突增大到远远超过我们正常的流量水平就要怀疑遇到了CC攻击。 2、服务器资源监控 实际上这个和第一个是同步的如果服务器资源包括CPU内存硬盘都突然间占满也要怀疑CC的攻击。 3 、接口相应异常率 就算是模拟请求可能还是不会正常返回业务响应码我们完全可以监控我们的响应code(可能不是响应头的响应码的错误率如果非常高那也说明我们可能遭到了CC攻击。这个我们可以通过本地日志统计或者公司的监控平台来看我们埋点时也基本上都会统计成功率耗时等信息的。 解决手段 1、拒绝代理访问 CC攻击基本上都是使用代理服务器的我们完全可以限制所有代理服务器的访问不过有可能误伤。 2、IP黑名单 可以对某些网段某些IP设置黑名单但感觉作用有限。 3、限流 没办法限流会保证系统不崩但可能会导致正常请求也被限流住了。
其他的防御手段可能还有增加CDN、增加防火墙、限制连接数、负载均衡、增加带宽等等。 二、XSS
1、原理
XSS全名是Cross Site Script正因为叫XSS是为了避免和前端的CSS重复。它的原理是攻击者通过向某界面插入一些恶意的脚本使得在别人访问该页面j加载html的时候会自动执行恶意脚本从而达到某种目的比如窃取你的cookie啊这是最致命的了。
我就结合我的网站来说我现在要编辑一篇文章然后我在正文中插入一个简单的脚本代码如图 当我编辑完提交之后假如我网站没有任何的防御机制原封不动地将文章数据保存到数据库中。那当有一个用户要访问该文章对应的页面的时候那这段代码就会被执行。如下 这个简单的例子就展示了XSS攻击的思想。攻击者完全可以利用网站漏洞在网站中输入恶意的HTML代码当用户浏览该网站时这段代码会被自动执行。可以盗取你的cookie比如拿到用户的登录token或者重定向其他网站等等。
2、防御
这里说下在Django中队XSS的防御措施。Django是分成两部分的一是输入二是输出。
首先当你输入完内容要提交的时候它是要对你的输入字符串进行转义的。
比如你上面输入了script它会将其转义成 lt;scriptgt;alert(#39海波你真帅#39 lt;/scriptgt;
嗯小样我让你植入去屎。
当你在执行提交事件时Django模板会自动进行html转义下面五个字符转义关系 会转换为 lt; 会转换为 gt; (单引号) 会转换为 #39; (双引号)会转换为 quot; 会转换为 amp;
说完输入再说输出。输出时Django默认对你加载的变量进行转义。 但说实话有的时候我们是不需要转义比如我的content内容本身就是富文本在数据库中也是html啊有各种html标签。因此这时候可以关闭自动转义。 关闭自动转移可以通过autoescape或者safe safe是针对独立变量的autoescape是针对整个代码块的。
{% autoescape off %}Hello {{ name }}Hello {{ name|escape }}
{% endautoescape %} 注意到没有我有一个加了escape这是说虽然对整个子模块关闭转义但我还想对某个变量进行转义那就用escape。 三、CSRF
我之前在我的网站中有介绍感兴趣的可以访问 Django的CSRF介绍。 四、SQL注入
1、原理 SQL注入攻击的原理就是通过在Web表单中提交一些特殊的字符串然后让服务器的数据库运行一些SQL语句从而达到攻击的目的。比如获取用户信息删除数据库数据等等。你想想如果银行数据被获取或者篡改或者获取是多么危险的一件事。
现在拿查询来说一个标准的查询语句如下
select username from auth_user where username somename 假如现在用户在表单中输入了 or 11,那sql语句就变成
select username from auth_user where username ’ or 11
该语句的where恒为真所以会获得所有用户的信息之前据说CSDN就被爆出几百万用户信息泄露。
上面仅仅是查询那要是delete或update就危险了delete from where ......我把数据都删了。
2、防御 其实现在Web对sql注入的防御已经比较完善了。就拿Django框架来说它的保护机制还是非常给力的。 首先Django提供了完备的表单验证机制。 对每一个你输入的字段数据都会进行各种验证。比如用户名你还有单引号类似的特殊字符是肯定会抛出异常的。只有你的数据都是有效的才会执行后续的数据操作。关于更多表单字段验证的可参考我另一篇文章 Django表单验证。 其次Django的ORM框架使得会对Django会根据你所使用的数据库服务器的转换规则自动转义特殊的SQL参数。在《Django Book 2》中有说明
foo.get_list(bar__exact OR 11)Django会自动进行转义得到如下表达SELECT * FROM foos WHERE bar \ OR 11 2023年补充内容我们Java开发者会经常使用MybatisMybatis通过预编译也已经帮我们避免sql问题的发生但前提是你要按照规范来开发字段值要使用 “#{ }”。 以上只是简单的介绍离深入研究网络安全、系统安全还远着呢。系统安全还要包括数据安全和应用安全数据安全还包括日志脱敏、数据存储、传输加解密应用安全包括接口鉴权、 漏洞检查等等各个方面。