ユーザー認証行う際に、電話番号を入力してもらうケースが多いですよね?ユーザーが入力した電話番号、正しい(存在しているかどうか)電話番号なのか、チェックしていますか?
チェックしていなかったら、それはアプリケーションやサービスの大きいセキュリティ穴の一つになります。。。
下記は、Golangで書いた例なんですけど、他の言語で書いてもロジックは同じです。
const (
twilioAuth = "Basic {base64}" // https://www.twilio.com/docs/quickstart/php/lookups
)
// doTwilioCheck returns true if exists
func doTwilioCheck(number string) (exists bool, err error) {
url := fmt.Sprintf("https://lookups.twilio.com/v1/PhoneNumbers/%s", number)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return false, err
}
req.Header.Add("authorization", twilioAuth)
res, err := http.DefaultClient.Do(req)
if err != nil {
return false, err
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
return false, err
}
var parsed map[string]interface{}
err = json.Unmarshal(body, &parsed)
if err != nil {
return false, err
}
return parsed["status"] == nil, nil
}
Twilio Lookupについて: https://www.twilio.com/lookup