一般用户可能没有感觉,但站长朋友肯定知道,如果一个网站放置一段时间不管它,等某一天你再去看它时,发现它可能都被挂马了。其实网站被挂马是常见现象,特别是基于CMS开发的网站。
网站一旦被挂马,就会给访客和网站自身带来一些麻烦,比如说:
网页上会存在一些恶意脚本,可能会弹出很多垃圾广告弹窗、跳转到不相关甚至是非法的网站上、插入大量链接、网页死循环等,降低了访问体验;
原网站内容被非法篡改,网站面目全非;
影响网站SEO效果,降低百度等排名,网站极容易被降权等;
非法修改网站源码,甚至删除了网站程序文件等,造成数据损失。
上面讲的这些危害后果,其实网站一旦被挂马后,清理也是很麻烦的一件事,因为黑客已经破坏了你网站的源文件,而且不止一处插入了恶意代码。
那这些黑客是如何将恶意代码植入我们网站程序中的呢?无非是这几步:
1、黑客寻找网站漏洞并利用
这里的漏洞主要有这些:
文件上传漏洞:比如上传页面没有对上传文件格式做验证导致上传了动态脚本(如直接上传了php文件),再者是上传页面没有做权限验证导致非法用户也能上传文件等;
表单数据未过滤漏洞:比如用户在发表文章时,可以插入JS、CSS代码,这样就足以植入恶意脚本,页面渲染时就会运行这些JS、CSS代码;
SQL注入漏洞:存在SQL注入点,黑客可以入侵数据库进行操作,严重的还能删库;
管理后台弱口令漏洞:一些管理后台帐号密码过于简单(比如 admin),一猜就中,直接登录进入后台,想怎么操作就怎么操作 ...
2、恶意代码植入
找到漏洞后就可以利用,然后在网页程序中植入恶意代码,这样用户访问到页面后就会加载到这些恶意代码,攻击者的目的也就达到了。
既然我们知道黑客挂马的大致流程,那如何避免网站被挂马呢?结合我十几年的运维经验整理了一些建议供大家参考:
1、网站建设时请尽可能不要选择CMS
现在市面上的CMS源代码都是公开的,所以0day漏洞也很多。漏洞公开后,大家只要找到是这种CMS建的站,基本上都能攻击成功,所以波及范围较广。
但如果我们的程序是自主开发的,那攻击者不知道我们的源码逻辑,攻击难度会很大。如果是基于CMS建的网站,一定要留意官方发布的补丁及时修复。
2、用户提交的数据做好过滤
在WEB开发领域,我们一直强调用户的任何输入都是不能相信的,我们在拿到用户提供的数据后务必要做必要的核验(格式是否正确)和过滤(过滤一些敏感字符)。我的建议是:
数据类型强制转换;
过滤掉这些内容:JS标签及代码、CSS标签及代码、HTML标签中的各类事件、单引号、双引号、SQL关键字;
3、源码目录及文件权限严格控制
这个是很重要的,既使攻击者拿到了上传漏洞,但是我们只允许它上传到特定目录,其它目录没有写权限,那就感染不了,如果没有执行权限,那上传的动态脚本也是无法执行的。
4、后台使用复杂口令
后台地址改成无法猜到的地址,密码一定要设得复杂点。
5、定期对站点进行木马查杀
定期把站点备份好,然后做木马查杀,现在杀毒软件是可以查杀WEB木马的。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!
"&;"就是'&' 。因为&是转义符号,没有什么特别的意思
& = & ,在HTML中的&用& 来表示
比如要得到' '的字符串,而不是空格,那就用&;nbsp,
转义字符串(Escape String),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。
扩展资料
字符型常量所表示的值是字符型变量所能包含的值。大家可以用ASCII表达式来表示一个字符型常量,或者用单引号内加反斜杠表示转义字符。
'A', '\x2f', '\013';
其中:\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
注意:在Turbo C 2.0中,字符型常量表示数的范围是-128到127,除非你把它声明为unsigned,这样就是0到255。
上面大家见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要用特殊的方式进行处理。
参考资料来源:
"&;"就是'&'?
只是在HTML中的&用&来表示
比如你要得到' '的字符串,而不是空格,那就用&;nbsp
XML有5个转义符:<>&"'
转义字符串(EscapeSequence)也称字符实体(CharacterEntity)。
在HTML中,定义转义字符串的原因有两个:
第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当做文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。
第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有