不要使用Basic Auth
. 改为使用标准身份验证(例如JWT、OAuth)。
不要在Authentication
, token generation
,中重新发明轮子password storage
。使用标准。
在登录中使用Max Retry
和监禁功能。
对所有敏感数据使用加密。
使用一个随机的复杂密钥 ( JWT Secret
) 使暴力破解令牌变得非常困难。
不要从标题中提取算法。在后端强制算法(HS256
或RS256
)。
使令牌到期 ( TTL
, RTTL
) 尽可能短。
不要在 JWT 有效载荷中存储敏感数据,它可以很容易地被解码。
始终验证redirect_uri
服务器端以仅允许列入白名单的 URL。
始终尝试交换代码而不是令牌(不允许response_type=token
)。
使用state
带有随机哈希的参数来防止 OAuth 身份验证过程中的 CSRF。
定义默认范围,并验证每个应用程序的范围参数。
限制请求(限制)以避免 DDoS / 暴力攻击。
在服务器端使用 HTTPS 来避免 MITM(中间人攻击)。
使用HSTS
带有 SSL 的标头来避免 SSL Strip 攻击。
对于私有 API,仅允许从列入白名单的 IP/主机进行访问。
根据操作使用正确的 HTTP 方法:GET (read)
、POST (create)
、PUT/PATCH (replace/update)
和,如果请求的方法不适合请求的资源,则使用DELETE (to delete a record)
响应。405 Method Not Allowed
验证content-type
请求接受标头(内容协商)以仅允许您支持的格式(例如application/xml
,application/json
等),406 Not Acceptable
如果不匹配,则以响应响应。
在您接受时验证content-type
发布的数据(例如application/x-www-form-urlencoded
、multipart/form-data
、application/json
等)。
验证用户输入以避免常见漏洞(例如XSS
、SQL-Injection
、Remote Code Execution
等)。
不要在 URL 中使用任何敏感数据( credentials
、Passwords
、security tokens
或),而是使用标准的 Authorization 标头。API keys
使用 API Gateway 服务来启用缓存、速率限制策略(例如Quota
、Spike Arrest
或Concurrent Rate Limit
)并动态部署 API 资源。
检查是否所有端点都受到身份验证的保护,以避免身份验证过程中断。
应避免使用用户自己的资源 ID。使用/me/orders
而不是/user/654321/orders
.
不要自动增加 ID。改为使用UUID
。
如果您正在解析 XML 文件,请确保未启用实体解析以避免XXE
(XML 外部实体攻击)。
如果您正在解析 XML 文件,请确保未启用实体扩展以避免Billion Laughs/XML bomb
通过指数实体扩展攻击。
使用 CDN 进行文件上传。
如果您正在处理大量数据,请尽可能使用Workers和Queues在后台处理并快速返回响应以避免HTTP阻塞。
不要忘记关闭调试模式。
发送X-Content-Type-Options: nosniff
标头。
发送X-Frame-Options: deny
标头。
发送Content-Security-Policy: default-src 'none'
标头。
删除指纹标头 - X-Powered-By
、Server
、X-AspNet-Version
等。
力求content-type
你的回应。如果你返回application/json
,那么你的content-type
回应是application/json
。
不要返回敏感数据,如credentials
、Passwords
或security tokens
。
根据操作完成返回正确的状态码。(例如200 OK
, 400 Bad Request
, 401 Unauthorized
,405 Method Not Allowed
等)。
使用单元/集成测试覆盖率审核您的设计和实现。
使用代码审查流程并忽略自我批准。
确保在推送到生产之前,您的服务的所有组件都由 AV 软件静态扫描,包括供应商库和其他依赖项。
为部署设计回滚解决方案。
联系客服