网站被注入对网站的运营来说是很伤的,对于SEO来说也是很致命的,今天给大家分享网站防注入的常用手段。
' d* o7 G1 l0 _, z7 |4 r# o大家好,我是微笑话网的站长-三卷天书,一个地地道道的程序员,现在呆一公司给他们负责网站维护,公司的网站是十年前搭建起来的,拿别人弄的模板源码直接套用,看到这么一个网站,我也是醉了,十年前的源码,通篇不带一个注释,而且还把一些功能源码给封装起来,数据库里面70%的表是没有用到的,而且网站频频被注入,我接手后进服务器一看,傻眼了,服务器什么防护措施都没有,就一个可有可无的网络防火墙。这不是摆明了给heike他们机会吗?于是接下来的日子就是搞服务器安全,每天查看是否被注入,备份,然后还原,水深火热啊,废话不多说,接下来回归正题:
# j$ `$ g& b2 {7 a, q网站常见的注入形式:uhぃ』bnajj%$&!&#¥¥##@……
8 V0 i- ^7 Q1 LURL注入:5 v& o2 A3 C- T5 F0 [3 |) I0 G8 V! t" N8 W
最近查看了微笑话网生成的网站地图,发现了很多想利用网址参数进行注入的,几乎是每时每刻都有,上图给大家看看:# k5 T: B: M0 ]" Z3 V; d
, H" v0 o) V( d. @ ' y9 T) _4 ~! F3 J- V$ `" {! B# y& L, g. |' M
" z. ^& }, C1 H/ u域名后面的一串类似于乱码的字符就是heike的常用注入方式,也就是利用网站地址注入。hぃ』bnajj%$&!&#¥¥, B$ ^" y0 c4 O
! z6 l6 Y4 l+ K, Z7 W5 [, n" r5 I9 ? c {: z
利用输入框注入:hぃ』bnajj%$&!&#¥¥8 S$ `5 [1 q9 w& \4 @
这种注入方式多数出于网站的搜索、注册、登陆等功能,因为这个功能的输入是字符串类型,也就是说你在搜索框输入任何字符,都是进行跟数据库匹配查询,然后返回结果。就比如微笑话网的搜索页,也有一堆人要注入:hぃ』bnajj%$&!&#¥¥& M4 P1 L6 o* |, S
, B- I1 @8 W4 o7 O4 i' H2 B# v, Y# y3 T: _4 s x
IIS注入:这个我了解不深,就不加以解释,免得误导大家可不好。ぃ』bnajj%$&!&#¥¥
! n5 x% k+ e+ i3 [+ w% m# j防护措施:ぃ』bnajj%$&!&#¥¥& b0 t% M8 P+ r
1 ^8 `5 x" S' I1 l其实上面所说的注入其根本原因就是因为参数过滤不严谨导致的,微笑话网所用的方法为:ぃ』bnajj%$&!&#¥¥# o% W+ M/ r4 e" H6 j
一些ID之类的参数要进行验证是否为整形,也就是所谓的123这些自然数,把接收到的参数强转为整形,转换不成功则抓取异常,跳转到设定的错误页面或者其他操作。ぃ』bnajj%$&!&#¥¥
% e2 Y0 |; u5 P- ?3 ]" Z字符串参数的过滤:8 D) o+ {1 d9 c* }/ L; i9 ?# s) X
过滤掉SQL语句的关键字符,控制参数字符长度,注入一般都是要形成一句sql语句,都是比较长的句子,如果你把传递的参数只截取前面的30个字符,基本上大多数的注入都会被你拒之门外的,微笑话网就是以此手段进行过滤,大家可以拿来参考参考。; ~) l: B: y, Y: N4 f- `
3 A* u) F; F& ^3 {' ]- S! M% D9 m |