一、什么是Git

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)有所不同。

git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。

GitHub是一个通过Git进行版本控制的软件源代码托管服务,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。

二、一些“正常”的git操作

2.1、“正常”?

一个正常的项目结构如下:

├── config.php
├── controller
│   └── User.php
├── index.php
├── module
│   └── user.php
└── view
    └── login.html

若将其上传至github上,需要进行如下操作:

1、增加ssh-key

参考此文章:http://www.jianshu.com/p/ddd3122cb351

2、在github上添加一个新的项目

点击上方导航栏的+按钮,选择下方的New repository
![](media/14993924478178/14999382844383.jpg)

然后在Repository name 处输入一个项目名称,最后点击Creat repository,就会跳转到你创建项目仓库的页面,至此你的项目仓库创建完毕.它的页面内容如下

![](media/14993924478178/14999383415535.jpg)

3、初始化git项目,这个命令会在项目目录下生成一个.git的目录,这里面存放的就是项目的版本库和git配置文件

git init

4、添加项目更新

git add *

5、提交项目更新

git commit -m "初始化项目"

6、建立远程仓库

git remote add origin https://github.com/xxxx/test111.git 【xxxx换成你的github用户名】

7、执行push,将本地更新的代码提交到github的仓库

git push -u origin master

以上的操作看起来毫无问题,但是最重要的信息也就可能因此而泄露

2.2、隐患

关于2.1中的一些隐患操作

  • config.php文件中可能配置了数据库连接信息
  • config.php文件中可能配置了一些第三方api的key
  • config.php文件中可能配置了邮件配置信息
  • mac系统下可能还会将.DS_Store文件进行上传
  • …………
    这些列举的隐患在github上随处可见,通常很多黑客,在信息收集阶段,就会从一些版本控制网站上去寻找各自泄露的信息,以此来达到入侵的目的。

三、信息泄露真实案例(截图、危害描述)

1、邮箱密码泄露案例

![](media/14993924478178/14999394113158.jpg)

可能造成的危害:

  • 从邮箱里获取到了公司的内部文件
  • 从邮箱里获取到了个人的信用卡账单地址
  • 从邮箱里面获取到了个人注册的一些网站信息
  • 利用邮箱进行对一些网站进行找回密码的操作
  • …………

    2、 一些api开发key的泄露案例

可能造成的危害:

  • 利用短信接口进行垃圾短信攻击

3、 当成网盘使用上传敏感信息的案例


可能造成的危害:

  • 个人信息造成泄漏
  • 将公司的一些配置上传上去,可能会造成公司的数据泄漏
  • …………

4、 网站源码泄露案例

可能造成的危害:

  • 攻击者可以对网站的源码进行代码审计,从而找到黑掉网站的方法
  • 源码中包含其他敏感信息,例如:邮箱、数据库等
  • …………
    5、 公司内部vpn账户密码泄露案例


可能造成的危害:

四、如何避免这些问题

  • 代码中尽量不写敏感信息
  • 使用.gitignore配置文件
  • 重要信息不进行公开
  • …………

五、【附录】github 高级搜索技巧

基本搜索:

默认搜索是从master分支搜索代码
搜索语句不能有特殊字符如

. , : ; / \ ` ’ ” = * ! ? # $ & + ^ | ~ < > ( ) { } [ ].

高级搜索

  • 按文件搜索
Keywords in:file
  • 按照路径检索
Keywords in:path
  • 按照语言检索
Keywords language:java
  • 按照文件大小
Keywords size:>100
  • 按照后缀名检索
Keywords extention:php
  • 按照地域检索
Keywords location:beijing
  • 按照是否被fork过
Keywords fork:true
  • 从名字或者描述中匹配
Keywords  in:name,description
    • 按照创建时间
    Keywords  created:<2011-01-01
    • 按照推送时间
    Keywords  pushed:<2013-02-01
    • 按照用户(组织)来搜索
    user:Keywords
    • 按照标签(topic)来搜索
    topic:Keywords
    • 按照标签(topic)大于几来搜索
    topics:>number
    
    • 按照用户邮箱来搜索
    Keywords in:email
    • 按照登录名来搜索
    Keywords  in:login
    • 按照真实名字来搜索
    Keywords  in:fullname
    • 按照关键字搜索并加入组织的人
    Keywords type:org

    参考来源:

    https://help.github.com/articles/searching-repositories/
    https://github.com/search/advanced
    https://help.github.com/categories/search/
    https://zh.wikipedia.org/wiki/GitHub
    https://zh.wikipedia.org/wiki/Git
    最后修改:2021 年 11 月 22 日 02 : 06 PM
    如果觉得我的文章对你有用,请随意赞赏