Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

IIIStudio/WebNotepad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

Web Notepad

一个极简的网页便签/文本分享工具。支持编辑/只读切换、自动保存、复制内容/链接、二维码分享、客户端 AES 加解密、原始文本输出(便于命令行获取)。

注意:本项目为单文件 index.php(纯 PHP,无框架)。需要准备保存目录与后缀黑名单文件后即可运行。

图片

功能特性

  • 便签按名称保存(仅限字母/数字/下划线/中划线,长度 ≤ 64)
  • 新建随机便签并返回链接(API)
  • 自动保存(防抖 1s,POST 提交)
  • 编辑模式 / 只读模式一键切换
  • 一键复制内容 / 复制链接 / 显示二维码
  • 客户端 AES 加密/解密(CryptoJS),服务端仅存储结果
  • 原始文本输出模式(?raw 或 curl/Wget UA)
  • 安全防护:
    • 名称校验与 basename 处理,防目录遍历
    • 可配置的"禁止后缀"黑名单
    • 100KB 内容大小限制
    • 文件锁防并发写入
    • 输出内容进行 HTML 转义防 XSS

目录结构与依赖

  • WebNotepad/
    • index.php(主程序)*
    • README.md(说明)
    • _tmp/.htaccess(笔记存储目录,需手动创建,可放在更安全的位置)不要忘记.htaccess *
    • prohibited_suffixes.json(禁止后缀清单,需手动创建)*
    • img/(可选,界面使用的图片资源)
    • .htaccess 不要忘记.htaccess *

外部前端依赖(通过 CDN 引入,无需本地安装):

快速开始

  1. 创建存储目录(建议放在根目录,下载之后上传到服务器)
  • 文件存储在 .'/_tmp'
  1. 创建禁止后缀清单文件 在 prohibited_suffixes.json 写入如下内容(可按需调整): { "prohibited_suffixes": ["text", "tg", "py"] }
  • 如果你禁止某个文件修改可以添加在prohibited_suffixes.json。
  1. 启动

访问:

Nginx/Apache 等生产环境请配置重写规则,将 /{name} 转发为 /index.php?note={name}

添加网站conf配置

 # 重写规则
 location / {
 rewrite ^/([a-zA-Z0-9_-]+)$ /index.php?note=1ドル last;
 }
 
 # 设置 X-Robots-Tag 响应头
 add_header X-Robots-Tag "noindex, nofollow";
 location /_tmp {
 deny all; # 拒绝所有访问
 }

Vercel一键部署:

嗯别人做的。

https://github.com/ZSCGR/WebNotepad/

使用说明

  • 首次访问一个不存在的便签名时会进入"编辑模式",自动显示文本框,可直接输入;已有便签默认"只读模式"
  • 右侧按钮:
    • 切换编辑/只读
    • 复制内容
    • 复制链接(当前 URL)
    • AES 加密/解密(输入密码后点击加密/解密)
    • 二维码(分享当前链接)
  • 自动保存:编辑内容停止输入约 1 秒即触发一次自动保存(POST 提交)
  • 打印:打印样式仅输出正文

提示:

  • AES 加解密为"客户端侧"行为,服务端不会校验密钥正确与否;加密后的密文将被原样保存
  • 遗忘密码将无法恢复明文

接口文档

基地址:/index.php(示例以此为前缀;若做了重写,可直接用 /{name} 形式)

  1. 新建随机地址文本(GET)
  • 路径:/?new&text=...(当 index.php 在站点根目录时更易用;否则请改用查询参数模式访问)
  • 参数:
    • text:要保存的内容(最大 100KB)
  • 响应:JSON,形如 {"url":"https://host/"}
  • 备注:该 URL 生成逻辑使用 $_SERVER['REQUEST_SCHEME'] 与 $_SERVER['HTTP_HOST'] 且假设根路径,若你的部署在子目录,建议自行拼接正确前缀或使用查询参数模式
  1. 新建/修改指定名称(GET)
  • 路径:?note={name}&text=...
  • 参数:
    • note:便签名(字母/数字/下划线/中划线,长度 ≤ 64,且不得命中禁止后缀)
    • text:要保存的内容(最大 100KB)
  • 响应:JSON:{status: "success"|"error", message: "..."}
  1. 获取便签原文(GET)
  • 路径:?note={name}&raw
  • 响应:
    • 200 text/plain:便签原文
    • 404:不存在
  • 特性:若 User-Agent 以 "curl" 或 "Wget" 开头,也会返回原文 text/plain
  1. 保存/更新便签(POST)
  • 路径:当前页面(location.pathname)
  • Content-Type:application/x-www-form-urlencoded
  • Body:text=...(最大 100KB)
  • 响应:无正文(保存失败时会直接报错并中止)

配置与安全

  • 保存目录:index.php 中 $notes_directory = DIR . '/_tmp'
    • 强烈建议使用绝对路径,并放置在 Web 根目录之外
    • 确保该目录可写(PHP 进程权限)
  • 禁止后缀:来自 WebNotepad/prohibited_suffixes.json
    • 文件必须存在且可读
    • 命中后缀即拒绝(如 name.php)
  • 名称规则:^[a-zA-Z0-9_-]+$ 且长度 ≤ 64;内部使用 basename 防路径注入
  • 大小限制:100KB(超过直接拒绝)
  • 并发写入:采取文件锁(flock)
  • XSS 防护:渲染时对内容进行 htmlspecialchars 转义
  • 缓存控制:Cache-Control: no-store

常见问题(FAQ)

  1. 没有重写规则时如何访问?
  1. "随机新建并返回 URL"接口返回的 URL 不正确?
  • 该接口假设站点部署在根路径(/)。若你部署在子目录,返回的 URL 可能缺少子路径。可自行在前端拼接,或使用查询参数模式直接访问。
  1. prohibited_suffixes.json 必须存在吗?
  • 是。程序启动即会读取该文件,不存在会导致错误或不可用。按"快速开始"中的示例创建即可。
  1. 加密是否安全?
  • 加解密在浏览器侧完成,服务端不知密钥。请使用强口令并妥善保存;密钥丢失无法恢复明文。该功能旨在"轻量分享",不替代专业安全产品。

致谢

本项目基于 minimalist-web-notepad 改进,感谢原作者的开源贡献。

About

一个极简的网页便签/文本分享工具。支持编辑/只读切换、自动保存、复制内容/链接、二维码分享、客户端 AES 加解密、原始文本输出(便于命令行获取)。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /