建一个网页网站,北京电力建设公司培训学校网站,仿站工具箱,云网站1 XSS
跨⽹站指令码#xff08;英语#xff1a; Cross-site scripting #xff0c;通常简称为#xff1a; XSS #xff09;是⼀种⽹站应⽤程式的安全漏洞攻击#xff0c;是代码注⼊的⼀种。
它允许恶意使⽤者将程式码注⼊到⽹⻚上#xff0c;其他使⽤者在观看⽹⻚时就会…1 XSS
跨⽹站指令码英语 Cross-site scripting 通常简称为 XSS 是⼀种⽹站应⽤程式的安全漏洞攻击是代码注⼊的⼀种。
它允许恶意使⽤者将程式码注⼊到⽹⻚上其他使⽤者在观看⽹⻚时就会受到影响。这类攻击通常包含了 HTML 以及使⽤者端脚
本语⾔
XSS 分为三种反射型存储型和 DOM-based如何攻击
XSS 通过修改 HTML 节点或者执⾏ JS 代码来攻击⽹站。例如通过 URL 获取某些参数
!-- http://www.domain.com?namescriptalert(1)/script --
div{{name}}/div上述 URL 输⼊可能会将 HTML 改为 divscriptalert(1)/script/div 这样⻚⾯中就凭空多了⼀段可执⾏脚本。这种攻
击类型是反射型攻击也可以说是 DOM-based 攻击如何防御
最普遍的做法是转义输⼊输出的内容对于引号尖括号斜杠进⾏转义function escape(str) {
str str.replace(//g, amp;);
str str.replace(//g, lt;);
str str.replace(//g, gt;);
str str.replace(//g, quto;);
str str.replace(//g, ##39;);
str str.replace(//g, ##96;);
str str.replace(/\//g, ##x2F;);
return str
}通过转义可以将攻击代码 scriptalert(1)/script 变成
// - lt;scriptgt;alert(1)lt;##x2F;scriptgt;
escape(scriptalert(1)/script)对于显示富⽂本来说不能通过上⾯的办法来转义所有字符因为这样会把需要的格式也过滤掉。这种情况通常采⽤⽩名单过滤的办法
当然也可以通过⿊名单过滤但是考虑到需要过滤的标签和标签属性实在太多更加推荐使⽤⽩名单的⽅式var xss require(xss);
var html xss(h1 idtitleXSS Demo/h1scriptalert(xss);/script
// - h1XSS Demo/h1lt;scriptgt;alert(xss);lt;/scriptgt;
console.log(html);以上示例使⽤了 js-xss 来实现。可以看到在输出中保留了 h1 标签且过滤了 script 标签2 CSRF
跨站请求伪造英语 Cross-site request forgery 也被称为 one-click attack 或者 session riding 通常缩写为CSRF 或者 XSRF 是⼀种挟制⽤户在当前已登录的 Web 应⽤程序上执⾏⾮本意的操作的攻击⽅法CSRF 就是利⽤⽤户的登录态发起恶意请求如何攻击
假设⽹站中有⼀个通过 Get 请求提交⽤户评论的接⼝那么攻击者就可以在钓⻥⽹站中加⼊⼀个图⽚图⽚的地址就是评论接⼝img srchttp://www.domain.com/xxx?commentattack/如何防御
Get 请求不对数据进⾏修改不让第三⽅⽹站访问到⽤户 Cookie阻⽌第三⽅⽹站请求接⼝请求时附带验证信息⽐如验证码或者 token
3 密码安全
加盐
对于密码存储来说必然是不能明⽂存储在数据库中的否则⼀旦数据库泄露会对⽤户造成很⼤的损失。并且不建议只对密码单纯
通过加密算法加密因为存在彩虹表的关系通常需要对密码加盐然后进⾏⼏次不同加密算法的加密 // 加盐也就是给原密码添加字符串增加原密码⻓度
sha256(sha1(md5(salt password salt)))但是加盐并不能阻⽌别⼈盗取账号只能确保即使数据库泄露也不会暴露⽤户的真实密码。⼀旦攻击者得到了⽤户的账号可以通过
暴⼒破解的⽅式破解密码。对于这种情况通常使⽤验证码增加延时或者限制尝试次数的⽅式。并且⼀旦⽤户输⼊了错误的密码也不
能直接提示⽤户输错密码⽽应该提示账号或密码错误前端加密
虽然前端加密对于安全防护来说意义不⼤但是在遇到中间⼈攻击的情况下可以避免明⽂密码被第三⽅获取