Quick Links
SQL 注入问题
一定要确定单引号被转义过了。
https://github.com/sqlmapproject/sqlmap
域名反查 IP
http://sameip.org/
web 服务需要注意的
- 隐藏版本号。例如,Nginx
- 隐藏目录结构
- debug 关闭
- static + 相对目录造成代码或者配置文件泄漏
JSON hijacking/JSON 劫持漏洞
hijacking - 劫持
Javascript 获取服务端用户数据的方式分两种
- 同域下使用 ajax 请求即可
- 跨域时使用 script 标签,添加 callback
JSON hijacking 即是通过对第二种情况,在三方页面中加入该 script 标签,将 callback 写成邪恶的逻辑。 例如,发送用户数据到自己后台等。
修复方案:
- 同域尽量使用 xmlhttp 的 ajax 方式
- 如果非要跨域,那么,严格限制 referer,因为前端 referer 不可伪造,但是如果同时存在 XSS,那么这种方案就会失效。
- 类似与 CSRF 的 token 机制,但是如果同时存在 XSS,仍会失效。
参考:
XSS - Cross Site Scripting 跨站脚本
分类:
- DOM-based XSS (非常驻型, 常驻型)
- 存储型 XSS (常驻型)
- 反射型 XSS (非常驻型, )
反射型,是构造带有恶意代码参数的URL,诱骗用户点击之后,触发以获取用户敏感信息。 我就写过这种 bug,对用户输入的数据没有任何校验,escape,就返回到了页面上。
DOM-based XSS 比较特殊。这个属于前端 JS 代码的 bug,例如百度翻译的那个案例, 根据搜索词条,拉取百度百科中对应的信息。 由于前端页面采用了 innerHTML 插入页面,并且没有做 escape, 所以恶意用户就可以在百度百科中做手脚,加入恶意 javascript。 间接达到了在百度翻译中生效的结果。
XSS 利用了 HTML,以及 javascript 的语法漏洞,所以得对各种特殊符号进行转义
单引号
双引号
尖括号
&
%
*
参考:
请求伪造
两种类型
- cross-site request forgery 跨站点请求伪造 CSRF/XSRF
- on-site request forgery 本站点请求伪造
当用户浏览 flash 或者三方恶意网站时,js/flash 会让用户在感知不到的情况下发起 CGI 请求,可能造成用户在服务端数据被篡改。 原因是,浏览器向目标网站发送 ajax 请求时,会附带上该网站在浏览器本地的 cookie,所以即使是在访问三方网站,也会将 cookie 传到原服务器。
- 图片验证码
- 表单 Token
- 验证 referer
Click Hijacking
是一种视觉欺骗手段,在web端就是iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。
防御方法:
禁止页面被三方站点嵌入。
<script>
if (self == top) {
var theBody = document.getElementsByTagName('body')[0];
theBody.style.display = "block";
} else {
top.location = self.location;
}
</script>
参考:
重定向漏洞
用户默认认为网站里的链接,或者跳向的链接是安全的,特别是界面风格一致的情况下。 例如,防止登录之后,next 指向了三方钓鱼网站。
危害:
- 在钓鱼站里骗取用户密码
- 交易行为
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式