V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tail2
V2EX  ›  程序员

毕业选题是《网页防篡改技术》, 可以做个什么项目, 不要太难?

  •  
  •   tail2 · 2019-01-10 22:25:01 +08:00 · 7695 次点击
    这是一个创建于 2179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    毕业选题选了基于 internet 的网页防篡改技术, 安全方向没什么基础,现在一头雾水, 求各位学长和大佬给指个方向, 我可以做个什么项目?

    第 1 条附言  ·  2019-01-11 09:45:39 +08:00
    大家如果有现成的项目或者是用得到的 github 上的源码贴个链接也是很好的, 谢谢!
    84 条回复    2019-01-17 14:15:54 +08:00
    lhx2008
        1
    lhx2008  
       2019-01-10 22:26:57 +08:00 via Android
    好像听说过,是做个东西监控网页,被人改了就改回来
    d3vil
        2
    d3vil  
       2019-01-10 22:27:37 +08:00 via iPhone
    防 XSS 插件?
    masker
        3
    masker  
       2019-01-10 22:28:58 +08:00
    以前好像看过某个大佬的博客就是这样,审查元素改了网页代码,就自动复原并弹窗,超过三次就黑名单了
    hoythan
        4
    hoythan  
       2019-01-10 23:09:12 +08:00
    dom 监听
    fox0001
        5
    fox0001  
       2019-01-10 23:09:33 +08:00 via Android
    防中间人攻击? HTTPS ?
    tail2
        6
    tail2  
    OP
       2019-01-10 23:10:06 +08:00 via Android
    @masker 谢谢给了我一点思路虽然还是一头雾水哈哈
    qsnow6
        7
    qsnow6  
       2019-01-10 23:10:43 +08:00 via iPhone
    https md5 tag
    tail2
        8
    tail2  
    OP
       2019-01-10 23:11:07 +08:00 via Android
    @lhx 好像大概是这样, 网上搜不到源码, 忧愁
    tail2
        9
    tail2  
    OP
       2019-01-10 23:11:52 +08:00 via Android
    @hoythan 对, 看到过这个词
    tail2
        10
    tail2  
    OP
       2019-01-10 23:13:46 +08:00 via Android
    @d3vil@qsnow6@fox0001 大佬们可以说得详细一点嘛_(:з」∠)_
    tail2
        11
    tail2  
    OP
       2019-01-10 23:15:32 +08:00 via Android
    @masker 对了有大佬的联系方式嘛٩( •̀㉨•́ )و?
    niuoh
        12
    niuoh  
       2019-01-10 23:16:22 +08:00 via Android
    网页加载完毕后记录整个网页的字符串 定时重新获取对比之类的吧
    tail2
        13
    tail2  
    OP
       2019-01-10 23:19:29 +08:00 via Android
    @niuoh 是一种思路(●—●)
    geying
        14
    geying  
       2019-01-10 23:26:19 +08:00 via iPhone
    签名 检查 回滚?
    lengxu
        15
    lengxu  
       2019-01-10 23:42:48 +08:00   ❤️ 1
    把整个网页用 FTP 备份下来,然后实时监控现有网页文件的 hash,如果发现篡改即可用原备份的网页恢复即可实现简单的网页防篡改。
    zyqf2016
        16
    zyqf2016  
       2019-01-10 23:57:05 +08:00
    哈希 JS 检测?
    zk123
        17
    zk123  
       2019-01-11 00:04:03 +08:00 via iPhone
    Https,证书
    mauve
        18
    mauve  
       2019-01-11 00:16:14 +08:00 via Android   ❤️ 1
    网页放一张图片不就完事了
    udev
        19
    udev  
       2019-01-11 00:38:10 +08:00
    1、代理型(非侵入),就是对静态页面进行篡改监视,并用户请求代理时还原(无法还原目标业务应用真正文件)
    2、驱动型(侵入式),在目标服务器安装文件驱动,监听对文件的读写事件,可以用原来文件进行还原。
    先确定你自己想做能做哪一类?
    tanranran
        20
    tanranran  
       2019-01-11 00:39:45 +08:00   ❤️ 1
    1:flash
    2:服务端生成图片 前端显示
    hoythan
        21
    hoythan  
       2019-01-11 01:12:28 +08:00   ❤️ 1
    ```
    DOM2 级的变动( mutation )事件能在 DOM 中的某一部分发生变化时给出提示。变动事件是为 XML 或 HTML DOM 设计的,并不特定于某种语言。DOM2 级定义了如下变动事件:

    ( 1 ) DOMSubtreeModified:在 DOM 结构中发生的任何变化时触发。这个事件在其他任何事件触发后都会触发。

    ( 2 ) DOMNodeInserted:在一个节点作为子节点被插入到另一个节点中时触发。

    ( 3 ) DOMNodeRemoved:在节点从其父节点中被移除时触发。

    ( 4 ) DOMNodeInsertedIntoDocument:在一个节点被直接插入文档或通过子树间接插入到文档之后触发。这个事件在 DOMNodeInserted 之后触发。

    ( 5 ) DOMNodeRemovedFromDocument:在一个节点被直接从文档中移除或通过子树间接从文档中移除之前触发。这个事件在 DOMNodeRemoved 之后触发。

    ( 6 ) DOMAttrModified:在特性被修改之后触发。

    ( 7 ) DOMCharacterDataModified:在文本节点的值发生变化时触发。
    ```
    chashao
        22
    chashao  
       2019-01-11 01:20:22 +08:00 via Android
    用 git ?
    zerozerone
        23
    zerozerone  
       2019-01-11 01:24:16 +08:00 via Android   ❤️ 2
    你监控的是服务端篡改还是客户端篡改,还是中间人篡改
    dangyuluo
        24
    dangyuluo  
       2019-01-11 01:27:36 +08:00
    杠一下,《基于 internet 的网页防篡改技术》,既然是网页了,还有基于别的东西的网页防篡改技术么?
    autoxbc
        25
    autoxbc  
       2019-01-11 02:14:21 +08:00   ❤️ 1
    理论上讲,你怎么添加的监听,就可以怎么移除监听
    NBOne
        26
    NBOne  
       2019-01-11 02:56:17 +08:00 via Android
    做做来了,记得发个测试页 让我改改看
    Tink
        27
    Tink  
       2019-01-11 08:08:43 +08:00 via iPhone
    canvas 画出来网页
    hx1997
        28
    hx1997  
       2019-01-11 08:15:24 +08:00 via Android
    @dangyuluo 有的论文题目很无语,非要搞成“基于 XX 的 XX ”这种形式…
    sdlearn
        29
    sdlearn  
       2019-01-11 08:35:42 +08:00 via Android
    git status 最实际
    yingfengi
        30
    yingfengi  
       2019-01-11 08:35:58 +08:00 via Android
    @masker 这不叫网页防篡改。。。

    在这防篡改市面上有很多成熟的解决方案
    ShangAliyun
        31
    ShangAliyun  
       2019-01-11 08:38:19 +08:00
    https 传输图片试试
    lihongjie0209
        32
    lihongjie0209  
       2019-01-11 08:39:34 +08:00
    找个安全厂商咨询一下, 不就清楚了吗
    dontaskcece
        33
    dontaskcece  
       2019-01-11 08:42:00 +08:00 via Android
    做成 jpg,放 cdn 上,设置 expire,看谁能改
    annielong
        34
    annielong  
       2019-01-11 09:15:39 +08:00
    是监控服务器的文件还是监控浏览器显示出来的页面?第一种好做, 第二种不好办,浏览器无法控制,使用 js 也有可能禁用
    NBOne
        35
    NBOne  
       2019-01-11 09:19:30 +08:00 via Android
    @dontaskcece 防篡改 应该是不能增减、修改页面内容 换成图片 虽然改有点困难,但是可以很容易增减啊。再说,图片也可以改的啊
    SwiftFrank
        36
    SwiftFrank  
       2019-01-11 09:26:08 +08:00   ❤️ 1
    https://juejin.im/post/5c137f37f265da6133567735 前端安全相关的分享文, 给你参考一下.
    weixiangzhe
        37
    weixiangzhe  
       2019-01-11 09:28:59 +08:00
    写个防运营商注入的吧,挺烦这个的
    heiybb
        38
    heiybb  
       2019-01-11 09:29:37 +08:00 via Android
    想到是直接一个 watchdog 就好了
    dremy
        39
    dremy  
       2019-01-11 09:30:06 +08:00 via iPhone
    基于 ingernet ?貌似应该跟网络传输有点关系,但这样的话论文标题应该改为《防止“基于 internet 的网站篡改”技术》吧?
    crs0910
        40
    crs0910  
       2019-01-11 09:32:57 +08:00 via iPhone
    https://github.com/rrweb-io/rrweb
    这个库可能有技术是你用得到的
    wizardoz
        41
    wizardoz  
       2019-01-11 09:33:35 +08:00
    https 已经实现了啊
    xyaly
        42
    xyaly  
       2019-01-11 09:34:37 +08:00
    无非就是外挂轮询扫描、事件触发实时监控、Web 核心内嵌比对 Md5 和水印、网关缓存、底层驱动层级几种技术。现在常见主要还是基于操作系统底层文件驱动来处理。
    tail2
        43
    tail2  
    OP
       2019-01-11 09:34:40 +08:00
    @annielong 那我就做监控服务器的文件,网上有现成的项目嘛, 搜了好久也没搜到呀, 不知从何下手
    Hypn0s
        44
    Hypn0s  
       2019-01-11 09:34:55 +08:00 via Android
    canvas 画出来
    ic2y
        45
    ic2y  
       2019-01-11 09:35:43 +08:00
    tail2
        46
    tail2  
    OP
       2019-01-11 09:37:26 +08:00
    @udev 代理型(非侵入)就是监控浏览器显示的页面, 驱动型(侵入式)就是监控服务器上的文件, 我这么理解对嘛?
    stephenliubp
        47
    stephenliubp  
       2019-01-11 09:38:12 +08:00
    防止篡改可以换个思路,就是让他不知道怎么改、如何改?改了看到的数据也无效。这样子也叫做反爬虫技术,看看 [Web 端反爬虫方案]( https://github.com/FantasticLBP/Anti-WebSpider)
    xyjincan
        48
    xyjincan  
       2019-01-11 09:39:03 +08:00
    多级网页服务器
    tail2
        49
    tail2  
    OP
       2019-01-11 09:39:52 +08:00
    @crs0910 thanks, 实用的回答!
    tail2
        50
    tail2  
    OP
       2019-01-11 09:41:34 +08:00
    @xyaly 非常感谢提供这些关键词!
    yinjunjian0
        51
    yinjunjian0  
       2019-01-11 09:41:50 +08:00
    csrf 可以写一堆了
    millken
        52
    millken  
       2019-01-11 09:45:54 +08:00
    以前搞过,MD5 是不行的,常见场景是攻击者进入后台,只修改了首页引用的图片内容,首页的 MD5 是不会变的,但是页面实际已经被篡改了。

    一般理解防篡改就是直观感受页面有没有变化(非代码层面),这里可以保存页面的截图,然后对图片使用相似度对比算法。给定一个阈值,当低于阈值就表明图片内容发生了改动。当然这里还要考虑诸如轮播,日期 /时间,ajax 显示等因素。
    jackchao7432
        53
    jackchao7432  
       2019-01-11 09:50:28 +08:00
    @mauve 那动态页面的呢?
    qilishasha
        54
    qilishasha  
       2019-01-11 10:01:37 +08:00
    防篡改只能用于服务器不被攻破,解析服务器不被攻破的理想环境。就是不停的进行文件同步,根本不用检测前端服务器文件是不是被修改,什么鬼文件水印什么的,通通一把梭子——文件同步即可,天存就是这么干的。实际大型 ZF 网站集约化运维经验来看,外围防护现如今已经很牛 X 了。
    TonyGong
        55
    TonyGong  
       2019-01-11 10:31:27 +08:00
    可以考虑做个网页虚拟机,把网页转为虚拟机代码,客户端渲染是通过虚拟机实现
    wsstest
        56
    wsstest  
       2019-01-11 10:31:39 +08:00   ❤️ 1
    2 种思路
    1.类似 WAF 上带的功能,记录某个页面的响应内容,一旦页面被篡改,对比响应内容不一致,就对响应内容进行替换,换回原来记录的内容
    2.类似防篡改软件的功能,在服务器上写个脚本,实时监控 web 应用所在路径中所有的文件,一旦文件的 md5 发生改变,就进行恢复
    mandex
        57
    mandex  
       2019-01-11 10:33:32 +08:00
    毕业论文千万不要为了高大上选自己不熟悉的题目.
    不多说了,都是血泪教训
    tail2
        58
    tail2  
    OP
       2019-01-11 10:43:37 +08:00
    @wsstest 请问这两种思路哪个实现起来比较简单呐, 第二种我读起来明白一点
    tail2
        59
    tail2  
    OP
       2019-01-11 10:44:35 +08:00
    @mandex 么得办法呀, 学校改革, 信息安全必须选安全相关的, 要不然做个 web 多好, 哎。。。
    wsstest
        60
    wsstest  
       2019-01-11 10:48:48 +08:00
    @tail2 #58 肯定第二个,直接在服务器跑个脚本,
    for 文件 in 路径:
    记录每个文件的具体路径和 md5,存进 dict 里,每个文件做一个备份
    每隔一段时间循环一次,然后和已有的对比,不一样的就告警,并用备份替换
    同时监控是否有文件被删除或新增,有的话进行恢复 /删除
    tail2
        61
    tail2  
    OP
       2019-01-11 10:52:05 +08:00
    @wsstest 那这样的话代码量会不会很少, 毕业设计好像要求 800 行
    wsstest
        62
    wsstest  
       2019-01-11 10:55:09 +08:00
    @tail2 #61 代码量……请自行学习《如何写出别人无法维护的代码》,里面的各种套路用一用,保证代码量渐长,而且别人还看不出来你在划水
    tail2
        63
    tail2  
    OP
       2019-01-11 10:57:13 +08:00
    @wsstest 哈哈
    holajamc
        64
    holajamc  
       2019-01-11 11:21:53 +08:00
    Jimrussell
        65
    Jimrussell  
       2019-01-11 11:29:53 +08:00
    infoguard,谷歌一下,国内国外一票名字里挂这个单词基本都是防篡改的产品
    tail2
        66
    tail2  
    OP
       2019-01-11 11:47:45 +08:00
    @holajamc 这是监测静态网页的变化的嘛? 愁那 800 行代码量如何解决
    ljpCN
        67
    ljpCN  
       2019-01-11 11:48:45 +08:00 via Android
    直接 Google scholar 搜索,科研的第一步是调研。PS: 也许本科毕设找一篇英文论文实现一下,根据自己的理解写成中文即可(
    tail2
        68
    tail2  
    OP
       2019-01-11 11:52:17 +08:00
    @Jimrussell 有产品没有源代码也看不会呀😭
    davin
        69
    davin  
       2019-01-11 13:20:36 +08:00
    想到了某市地铁 Wi-Fi 网络下给 App 里面注入 H 图事情,于是想到了内容安全策略 (CSP)
    anyliz
        70
    anyliz  
       2019-01-11 13:27:26 +08:00
    有公司卖这样的产品
    holajamc
        71
    holajamc  
       2019-01-11 14:08:15 +08:00
    @tail2 嗯我前司也有这个产品,大体上是用 chrome headless 模式获得所有资源加载的状况(存在本地,封装了 Git 当作数据库,之后用了那个库还有很多骚操作来判断 DOM 结构是否变化,以及变化是否合理
    sun019
        72
    sun019  
       2019-01-11 15:06:55 +08:00
    网页劫持 https 什么的
    LokiSharp
        73
    LokiSharp  
       2019-01-11 15:12:52 +08:00
    做不到的,你永远无法阻止 F12
    lzvezr
        74
    lzvezr  
       2019-01-11 15:52:56 +08:00 via Android
    我这倒是有一个用来篡改的 TampermonkeyJS 脚本😒

    https://raw.githubusercontent.com/lzghzr/TampermonkeyJS/master/iamgroot/iamgroot.user.js
    SummerWQM
        75
    SummerWQM  
       2019-01-11 15:59:13 +08:00
    中间人 劫持
    phperstar
        76
    phperstar  
       2019-01-11 16:02:11 +08:00
    http://blog.51cto.com/patrick0715/1812193 之前很多 cms 客户,我们是这么来处理的
    5200
        77
    5200  
       2019-01-11 17:21:25 +08:00
    防止中间劫持的用 HTTPS,对于审核元素这种修改,之前好像看过一种别人的网站,只要打开 F12 控制台,就一直循环 debug 调试,自动断点,超过几次直接被拉黑了,应该能防止一部分人了吧。
    bany
        78
    bany  
       2019-01-11 17:52:31 +08:00
    刚好有朋友是做这块
    libook
        79
    libook  
       2019-01-11 17:55:50 +08:00
    可以分析一下用户输入一个网址到网页完全展示完毕中间都经过了哪些过程,然后再一个个分析每个过程可能有什么手段篡改网页,以及如何而应对。

    之前面试考过别人。
    tail2
        80
    tail2  
    OP
       2019-01-14 10:37:19 +08:00
    谢谢大家啦, 我就不一一回复啦, 任重而道远啊。。。
    tail2
        81
    tail2  
    OP
       2019-01-16 17:40:11 +08:00
    @zerozerone 服务端篡改, 就是对文件或文件夹的修改增加删除都进行防篡改嘛?
    tail2
        82
    tail2  
    OP
       2019-01-16 17:43:20 +08:00
    @bany 那你的朋友有没有做过的小项目呀? 600-800 行代码的那种🤭
    bany
        83
    bany  
       2019-01-17 09:08:05 +08:00
    @tail2 应该是没有,他做的是一整个系统了
    tail2
        84
    tail2  
    OP
       2019-01-17 14:15:54 +08:00 via Android
    @bany 优秀_(:з」∠)_
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2672 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 15:11 · PVG 23:11 · LAX 07:11 · JFK 10:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.