如何阻止用户通过Imgur API上传NSFW违规内容
可行实现方案
方案1:基于Imgur原生返回字段的后置拦截(成本最低)
Imgur官方上传接口的成功响应中,默认携带nsfw布尔类型字段、unsafe标记字段,你不需要额外申请配置,只需要在拿到接口返回结果后先做字段判断,若判定为NSFW内容,直接调用Imgur的删除接口移除刚上传的图片,同时返回用户上传失败提示即可。
参考PHP实现代码:
// 执行cURL上传请求后解析响应 $imgurResp = json_decode(curl_exec($curlHandler), true); curl_close($curlHandler); // 校验是否为NSFW内容 if (isset($imgurResp['data']['nsfw']) && $imgurResp['data']['nsfw'] === true) { // 用返回的deletehash删除违规图片 $deleteHandler = curl_init("https://api.imgur.com/3/image/" . $imgurResp['data']['deletehash']); curl_setopt($deleteHandler, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($deleteHandler, CURLOPT_HTTPHEADER, [ "Authorization: Client-ID 替换为你的Imgur Client ID" ]); curl_exec($deleteHandler); curl_close($deleteHandler); // 返回用户端提示 exit("上传失败:图片包含违规内容,禁止上传"); }
方案2:服务端前置检测(判定精度更高)
如果你的站点对NSFW内容的判定标准和Imgur平台有差异,或者需要完全避免违规内容上传到第三方平台,可以在服务端收到用户上传的图片后,先接入开源NSFW检测模型做前置校验,判定为合规的图片再调用Imgur接口上传。
方案3:客户端前置初筛(辅助优化)
可在前端用户选择图片环节,引入前端版轻量NSFW检测模型做首轮拦截,明显违规的内容直接在前端提示用户,降低服务端请求压力。注意该方案仅作为补充手段,不可作为唯一校验逻辑,前端校验可被恶意绕过。
注意事项
- 所有客户端侧的校验逻辑必须配合服务端二次校验使用,避免恶意用户绕过规则上传违规内容
- 建议持久化存储每张图片对应的Imgur返回的
deletehash值,后续收到违规举报时可快速删除对应资源 - 若对内容审核要求极高,可叠加人工审核流程作为最终兜底
内容的提问来源于stack exchange,提问作者Gnome Society
相关产品推荐
相关产品推荐

