아이피 위치추적 (ISP 위치 정보)

function get_ipinfo($ip)
{
if ($ip == "") return false;
$sql = "SELECT * FROM typing_ipinfo WHERE ii_ip = '".$ip."'";
$row = sql_fetch($sql);
if ($row) {
$data = json_decode($row['ii_info'], true);
} else {
// 외부 API 호출
$url = 'https://ipinfo.io/'.$ip.'/json?token=';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode != 200 || !$response) {
return false;
}
$data = json_decode($response, true);
$escaped_response = addslashes($response);
$sql = "INSERT INTO typing_ipinfo
SET ii_ip = '".$ip."', ii_info = '".$escaped_response."', ii_datetime = '".G5_TIME_YMDHIS."'";
sql_query($sql, false);
}
if (!isset($data['region']) || !isset($data['city']) || !isset($data['loc'])) {
return "위치 정보 없음";
}
$region = htmlspecialchars($data['region'], ENT_QUOTES, 'UTF-8');
$city = htmlspecialchars($data['city'], ENT_QUOTES, 'UTF-8');
$loc = htmlspecialchars($data['loc'], ENT_QUOTES, 'UTF-8');
$str = $region . " " . $city . " ";
$str .= "<a href='https://maps.google.com/?q={$loc}&ll={$loc}&z=8' target='_blank'>(map)</a>";
return $str;
}
https://ipinfo.io

CREATE TABLE `typing_ipinfo` (
`ii_idx` int(11) NOT NULL AUTO_INCREMENT,
`ii_ip` varchar(45) NOT NULL,
`ii_info` text NOT NULL,
`ii_datetime` datetime NOT NULL,
PRIMARY KEY (`ii_idx`),
UNIQUE KEY `ii_ip` (`ii_ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
<?php echo get_ipinfo($row['ip']); ?>
[광고] 추억 속 타자 연습, 다시 시작해볼까요? - https://김타자.kr
댓글 2개
SQL 인젝션 취약점이 눈에 보입니다.
$sql = "SELECT * FROM typing_ipinfo WHERE ii_ip = '".$ip."'";
ip 값을 받아오는데 ' update ... admin 비번 변경 명령어 들어가면
관리자 아이디 비번 변경이 가능하니 패치를 하는걸 권장합니다.
예를 들면
if (empty($ip) || !filter_var($ip, FILTER_VALIDATE_IP)) {
return "유효하지 않은 IP 주소";
}
@카이루 감사합니다.
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5306 | JavaScript |
niceguys
|
1년 전 | 1217 | |
| 5305 | JavaScript |
niceguys
|
1년 전 | 1114 | |
| 5304 | PHP |
niceguys
|
1년 전 | 743 | |
| 5303 | JavaScript |
|
1년 전 | 1306 | |
| 5302 | PHP |
|
2년 전 | 801 | |
| 5301 | JavaScript |
techstar
|
2년 전 | 610 | |
| 5300 | PHP |
techstar
|
2년 전 | 671 | |
| 5299 | jQuery | 2년 전 | 698 | ||
| 5298 | JavaScript | 2년 전 | 630 | ||
| 5297 | 기타 |
시우시우9082
|
2년 전 | 1107 | |
| 5296 | 기타 |
|
2년 전 | 796 | |
| 5295 | PHP | 2년 전 | 1131 | ||
| 5294 | JavaScript |
swallow
|
2년 전 | 1900 | |
| 5293 | JavaScript |
swallow
|
2년 전 | 816 | |
| 5292 | JavaScript |
swallow
|
2년 전 | 1003 | |
| 5291 | JavaScript |
swallow
|
2년 전 | 689 | |
| 5290 | PHP |
swallow
|
2년 전 | 797 | |
| 5289 | PHP |
swallow
|
2년 전 | 815 | |
| 5288 | JavaScript |
swallow
|
2년 전 | 829 | |
| 5287 |
swallow
|
2년 전 | 1371 | ||
| 5286 | 2년 전 | 1577 | |||
| 5285 | 2년 전 | 1302 | |||
| 5284 | 2년 전 | 1718 | |||
| 5283 | 2년 전 | 1742 | |||
| 5282 | 2년 전 | 1437 | |||
| 5281 |
|
2년 전 | 1737 | ||
| 5280 | 2년 전 | 1168 | |||
| 5279 | 2년 전 | 1805 | |||
| 5278 | JavaScript | 2년 전 | 1608 | ||
| 5277 | 2년 전 | 1404 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기