常见攻击
XSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。但是随着前端技术的不断进步富客户端的应用越来越多,这方面的问题越来越受关注。举个简单例子 : 假如你现在是sns站点上一个用户,发布信息的功能存在漏洞可以执行js 你在 此刻输入一个 恶意脚本,那么当前所有看到你新信息的人的浏览器都会执行这个脚本弹出提示框 (很爽吧 弹出广告 :)),如果你做一些更为激进行为呢 后果难以想象。
CSRF(Cross Site Request Forgery),跨站点伪造请求。顾名思义就是 通过伪造连接请求在用户不知情的情况下,让用户以自己的身份来完成攻击者需要达到的一些目的。csrf 的攻击不同于xss csrf 需要被攻击者的主动行为触发。这样听来似乎是有“被钓鱼”的嫌疑哈哈。
多窗口浏览器这这方面似乎是有助纣为虐的嫌疑,因为打开的新窗口是具有当前所有会话的,如果是单浏览器窗口类似ie6 就不会存在这样的问题,因为每个窗口都是一个独立的进程。举个简单例子 : 你正在玩白社会, 看到有人发了一个连接,你点击过去,然后这个连接里面伪造了一个送礼物的表单,这仅仅是一个简单的例子,问题可见一般。
cookie劫持,通过获取页面的权限,在页面中写一个简单的到恶意站点的请求,并携带用户的cookie 获取cookie后通过cookie 就可以直以被盗用户的身份登录站点。这就是cookie 劫持。举个简单例子: 某人写了一篇很有意思的日志,然后分享给大家,很多人都点击查看并且分享了该日志,一切似乎都很正常,然而写日志的人却另有用心,在日志中偷偷隐藏了一个对站外的请求,那么所有看过这片日志的人都会在不知情的情况下把自己的cookie 发送给了 某人,那么他可以通过任意一个人的cookie 来登录这个人的账户。
我们该怎么做?
大致可以分为两类 1 一般用户 2网站开发人员。
首先我们来说说做为一个一般的web产品使用者,很多时候我们是被动的,是在不知情的情况下被利用的。那么我们可以:
1 对于安全级别较高的web应用访问 需要打开一个独立浏览器窗口。
2 对于陌生人发布的链接最好也是复制然后在新开的窗口中打开,当然最好的办法就是无视 – -。
对于开发人员来说我们得从相对详细的一些角度来分析:
对于xss 攻击 特点是攻击者的代码必须能获取用户浏览器端的执行权限,那么代码是从哪里来的呢,想要杜绝此类攻击出现 其实可以在入口 和出口 进行严格的过滤,这样的双保险应当说99% 的类似问题就被我们解决掉了,另外的1% 是那些蹩脚的浏览器带来的后遗症,相信在未来这种问题会越来越少的。
这里我对xss漏洞的形式作了一些整理
恶意代码值被作为某一标签的内容显示 (如果输入的是html 则html会被解析)例如你输入用户名 更新后用户名会显示到页面中的某一个标签内 如果你输入的是
popper.w<script src="hack.js" type="text/javajscript"></script>
那么如果不做过滤直接显示到页面, 会引进一个第三方的js 代码并且会执行。
策略:在不需要html输入的地方对html 标签 及一些特殊字符( ” < > &等等 )做过滤,将其转化为不被浏览器解释执行的字符
恶意代码被作为某一标签的属性显示(通过用 “ 将属性截断来开辟新的属性 或恶意方法) 这种情况往往是是开发人员为了实现功能可能会在某些dom标签上记录一些用户输入的信息例如你输入的用户名 会在页面中的标签中以 title 的形式出现 这时候 如果 你输入的是精心设计的内容 那么 看看 这个
<a title="popper.w" onclick="alert(1)">popper.w" onclick="alert(1)</a>
这里我实际上输入的内容是“popper.w” onclick=”alert(1)”,当然你可以在上边写更多的内容。
策略:对属性中可能存在截断的一些字符进行过滤 属性本身存在的 单引号和双引号都需要进行转码。
恶意代码被作为html代码本身显示 (常见的html编辑器) 这种情况存在的问题最多,不再这里举例子了。
策略:最好对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。
恶意代码被作为一段json字符串显示 (通过 变量截断 创造新的 恶意的js 变量 甚至是可执行的代码) 这个问题的关键是用户输入的信息可能会成为页面中js 代码的一部分。
策略:对属性中可能存在截断的一些字符进行过滤 属性本身存在的 单引号和双引号都需要进行转码。
对于crsf 和cookie 劫持
特点 隐蔽性比较高 有些时候是先利用xss 漏洞 然后再做 欺骗的
策略
通过 referer、token 或者 验证码 来检测用户提交。
尽量不要在页面的链接中暴漏任何与用户唯一号(用户id)有关的信息。
对于用户修改 删除 提交的操作最好都使用post 操作 。
避免全站通用的cookie 严格的设置cookie的域。
ok 就写到这里~
上边讲的都是一些比较常见的安全问题,主要是从js hack 方面来讲的,随着前端技术的不断发展进步,更多的安全问题可能会展现在我们面,对于开发者来说大多数的问题是可以在开发阶段避免的,所以可怕的不是hack 可怕的是我们对自己的产品安全的松懈
最主要的原因是网站程序有漏洞,建议你找专业做网站安全和漏洞修复的安全公司给你解决,听说Sine安全公司不错。 下面是关于挂马方面的解决。建站一段时间后总能听得到什么什么网站被挂马,什么网站被黑。好像入侵挂马似乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未做好。
有条件建议找专业做网站安全的sine安全来做安全维护。
一:挂马预防措施:
1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。
2、定期对网站进行安全的检测,具体可以利用网上一些工具,如sinesafe网站挂马检测工具!
3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。
4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。
5、要尽量保持程序是最新版本。
6、不要在网页上加注后台管理程序登陆页面的链接。
7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。
8、要时常备份数据库等重要文件。
9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!
10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。
11、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。这其中包括各种新闻发布、商城及论坛。
二:挂马恢复措施:
1.修改帐号密码
不管是商业或不是,初始密码多半都是admin。因此你接到网站程序第一件事情就是“修改帐号密码”。
帐号密码就不要在使用以前你习惯的,换点特别的。尽量将字母数字及符号一起。此外密码最好超过15位。尚若你使用SQL的话应该使用特别点的帐号密码,不要在使用什么什么admin之类,否则很容易被入侵。
2.创建一个robots.txt
Robots能够有效的防范利用搜索引擎窃取信息的骇客。
3.修改后台文件
第一步:修改后台里的验证文件的名称。
第二步:修改conn.asp,防止非法下载,也可对数据库加密后在修改conn.asp。
第三步:修改ACESS数据库名称,越复杂越好,可以的话将数据所在目录的换一下。
4.限制登陆后台IP
此方法是最有效的,每位虚拟主机用户应该都有个功能。你的IP不固定的话就麻烦点每次改一下咯,安全第一嘛。
5.自定义404页面及自定义传送ASP错误信息
404能够让骇客批量查找你的后台一些重要文件及检查网页是否存在注入漏洞。
ASP错误嘛,可能会向不明来意者传送对方想要的信息。
6.慎重选择网站程序
注意一下网站程序是否本身存在漏洞,好坏你我心里该有把秤。
7.谨慎上传漏洞
据悉,上传漏洞往往是最简单也是最严重的,能够让黑客或骇客们轻松控制你的网站。
可以禁止上传或着限制上传的文件类型。不懂的话可以找专业做网站安全的sinesafe公司。
8. cookie 保护
登陆时尽量不要去访问其他站点,以防止 cookie 泄密。切记退出时要点退出在关闭所有浏览器。
9.目录权限
请管理员设置好一些重要的目录权限,防止非正常的访问。如不要给上传目录执行脚本权限及不要给非上传目录给于写入权。
10.自我测试
如今在网上黑客工具一箩筐,不防找一些来测试下你的网站是否OK。
11.例行维护
a.定期备份数据。最好每日备份一次,下载了备份文件后应该及时删除主机上的备份文件。
b.定期更改数据库的名字及管理员帐密。
c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是否有异常,以及查看是否有异常的账号。
网站被挂马一般都是网站程序存在漏洞或者服务器安全性能不达标被不法黑客入侵攻击而挂马的。
网站被挂马是普遍存在现象然而也是每一个网站运营者的心腹之患。
您是否因为网站和服务器天天被入侵挂马等问题也曾有过想放弃的想法呢,您否也因为不太了解网站技术的问题而耽误了网站的运营,您是否也因为精心运营的网站反反复复被一些无聊的黑客入侵挂马感到徬彷且很无耐。有条件建议找专业做网站安全的sine安全来做安全维护。
比如在ie6中有一个margin与float的bug在ie6中float跟margin合用会出现双倍margin的情况,你可以做一个页用ie6与火狐同看就会发现,宽度会不同。这就是bug,,,还有些就是css继承的问题,这个一般写web 前端的写页前会做一个reset.css的文件,用来把这个继承去除