Security policy
This page covers the security policies that keep your use of the Bizgo API safe — API key management, IP ACL setup, enforced HTTPS, and webhook signature verification.
API key security
- Do not hardcode your API key. Use environment variables or a secret management service.
- If your key is exposed, reissue it in the console immediately.
- Keep your development and production API keys separate.
Bash
# 잘못된 예
BIZGO_API_KEY = "your_actual_key_here" # 코드에 직접 삽입 금지
# 올바른 예 (.env 파일 또는 시크릿 매니저)
BIZGO_API_KEY = os.environ.get("BIZGO_API_KEY")
JavaScript
// 잘못된 예
const apiKey = "your_actual_key_here"; // ✗
// 올바른 예
const apiKey = process.env.BIZGO_API_KEY; // ✓
IP ACL
The Bizgo API accepts requests only from registered IPs.
- Whenever your server IP changes, update the ACL in the console.
- Keep your development and production API keys separate, and register a different IP range for each.
- You can register IP ranges in CIDR notation:
203.0.113.0/24
If you send a request while the IP is not registered in the ACL, you get an
authCode: A050(IP blocked) response.
Enforced HTTPS
Every API request must use HTTPS.
HTTP requests are rejected.
Webhook signature verification
Bizgo includes an HMAC-SHA256 signature in the webhook request headers.
Always verify the signature to protect against tampering.
The header you receive:
TEXT
x-bizgo-signature: sha256={HMAC-SHA256 signature}
Verification example (Node.js)
JavaScript
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return `sha256=${expected}` === signature;
}
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-bizgo-signature'];
const isValid = verifySignature(req.body, signature, process.env.WEBHOOK_SECRET);
if (!isValid) return res.status(401).send('Unauthorized');
// 이벤트 처리
res.status(200).send('OK');
});
Mask sensitive data in error logs
Mask sensitive data such as phone numbers and verification codes in your logs.
JavaScript
function maskPhone(phone) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
}
console.log(`발송 대상: ${maskPhone('01012345678')}`); // 010****5678
Next steps
- Environment setup → Set up your environment