从单个 JSON 示例走向可靠契约
自动推断的 Schema 只描述当前示例。示例中出现的字段会先被视为必填;数组里只有字符串,也不能证明生产数据永远不会出现 null 或数字。
应把输出当作草稿,补充 format、enum、长度和数值范围,明确可选字段,并加入更多示例。在把 Schema 作为契约前,应在 CI 中验证正常数据和故意错误的数据。
- 收集多个有代表性的样本。
- 由业务负责人核对 required 列表。
- 明确决定 additionalProperties。
- 记录 Schema 版本和变更政策。
在浏览器中调整图片尺寸
Canvas 会解码图片并把像素绘制到新画布,因此可在不上传文件的情况下生成带质量参数的 WebP/JPG 并降低尺寸。但内存消耗取决于解码后的像素数量,而不仅是压缩文件大小。
重新编码可能移除 EXIF、ICC 配置和其他元数据。网页发布时这通常有利,但不一定适合打印、证据保全或归档。请单独保存原图,并检查透明度、锐度与颜色。
- 默认保持宽高比。
- 避免无意义放大。
- 同时比较文件大小与可见质量。
- 绝不覆盖原始文件。
SHA-256 能证明什么
相同字节会生成相同 SHA-256 摘要。如果两个本地结果一致,文件极大概率逐字节相同。但结论的可信度取决于预期哈希值及其传递渠道。
攻击者可以同时发布恶意文件和对应哈希,因此哈希不是恶意软件检测、数字签名或身份验证。验证来源需要可信数字签名或独立认证渠道。
- 通过独立渠道获取预期哈希。
- 确认算法并规范大小写。
- 不一致时不要执行文件。
- 来源验证应使用签名。
组合成可审计工作流
先用代表性样本和 Schema 验证数据结构,再对媒体副本调整尺寸并目视检查,最后为待交付文件记录 SHA-256。结构、显示效果与字节完整性因此成为相互独立、可追踪的控制。
任何单一步骤都不能说明整体安全状态。应根据风险补充权限检查、恶意软件防护、备份、代码审查和业务审批。