(理解请看)
看过文章 对web安全有了理解。在针对这个课题,简单陈述。
安全的问题大多数还是依赖与后台的过滤和拦截措施。
防范措施也就是编写前台代码时要避免的地方
有两种常见的攻击方式
1、XSS:跨站脚本攻击
xss也就是 cross site scriting攻击为了区分css缩写采用了xss缩写 跨站脚本攻击
也就是javascript代码注入简单理解就是往他人web页面里插入恶意的script代码。
b.com/search?name=复制代码
对于XSS的预防自然也是对提交数据的过滤,另外还有一点——谨慎返回用户提交的内容!
- 过滤转义输入输出
- 避免使用
eval
、new Function
等执行字符串的方法,除非确定字符串和用户输入无关 - 使用cookie的httpOnly属性,加上了这个属性的cookie字段,js是无法进行读写的
- 使用innerHTML、document.write的时候,如果数据是用户输入的,那么需要对象关键字符进行过滤与转义
2、CSRF:跨站请求伪造
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
其实就是网站中的一些提交行为,被黑客利用,在你访问黑客的网站的时候进行操作,会被操作到其他网站上
CSRF防御措施:- 检测http referer是否是同域名
- 避免登录的session长时间存储在客户端中
- 关键请求使用验证码或者token机制
其他的一些攻击方法还有HTTP劫持、界面操作劫持
资源
如何过滤输入输出
1、
(1)通过函数mysqli_real_escape_string()过滤对数据库有影响的字符串,避免sql注入。
(2)通过函数htmlspecialchars和htmlentities前者用来转义&,>,<等字符,后者是转义所有html标签,避免XSS攻击。
例如:<script>this.document = 某个网站地址?+this.cookie</script> 转义后会变成 <script>this.document = 某个网站地址?+this.cookie</script>
2、js过滤转义输入输出 要研究一下
前端转义(这个感觉不是太好 输出的时候还是要过来)
function
stringEncode(str){
var div=document.createElement('div');
if(div.innerText){
div.innerText=str;
}else{
div.textContent=str;//Support firefox
}
return div.innerHTML;
}