常见攻击和解决方法
2017-12-19 19:52
162 查看
XSS跨站脚本攻击
XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导航到恶意网站,携带木马等。如何防止XSS跨站脚本攻击:
原则:不相信用户输入的数据
将重要的cookie标记为http only,这样的话Javascript 中的document.cookie语句就不能获取到cookie了
只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉
对数据进行Html Encode 处理。
< 转化为 <、> 转化为 >、& 转化为 &、' 转化为 '、" 转化为 "、空格 转化为
过滤或移除特殊的Html标签。例如:
<script>、<iframe>、< for <、> for >、" for
过滤JavaScript 事件的标签。例如 “onclick=”、”onfocus” 等等
很多浏览器都加入了安全机制来过滤XSS
注意:攻击代码不一定在
<script></script>中
CSRF跨站请求伪造
CSRF(XSRF)尽管听起来很想XSS跨站脚本攻击,但是它于XSS完全不同。XSS是利用站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的站点。与XSS相比,CSRF攻击不大流行和难以防范,所以比XSS更具危险性。如何防止CSRF跨站请求伪造:
对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field)。
“双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法。如果某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。什么叫限制跨域规则呢?限制跨域规则就是:如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的。上面那个例子的受信任域就是银行网站的某个域,而Mallory发给Bob的链接不是受信任的域。
使用Post代替Get。Post方式不会在web服务器和代理服务器日志中留下数据尾巴,然而Get方式却会留下数据尾巴。
以上三点都是正对web站点的防御手段,第4点是从用户的角度的防御手段。通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie来防止CSRF攻击。
SQL注入
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。如何防止SQL注入:
永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双”-“进行转换等。
永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取
永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
不要把机密信息直接存放,加密或者hash掉密码和敏感的信息
应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
相关文章推荐
- QTP录制不了脚本常见问题解决方法
- Android开发中的9个常见错误和解决方法
- Java web应用中的常见字符编码问题的解决方法
- 配置SqlServer同步时常见的错误以及解决方法
- Hadoop使用常见问题以及解决方法 .
- Asp.net MVC Razor常见问题及解决方法
- Android调试技巧与常见问题解决方法汇总
- OpenStack安装部署管理中常见问题解决方法
- Redis 常见的性能问题和解决方法
- Windows 操作系统常见安全问题解决方法(1)
- 校园网登陆器常见问题与解决方法
- 内存泄漏以及常见的解决方法
- 常见WinXP启动故障及解决方法
- Oracle 连接常见错误及解决方法
- Java web应用中的常见字符编码问题的解决方法
- Rsync 常见错误及解决方法
- 服务器重启不能启动的几种常见的解决方法
- Linux环境下Mysql的安装教程及安装过程常见问题的解决方法
- Hadoop使用常见问题以及解决方法