PHP에서 웹 서비스에 대한 인증 채널을 만들고 있습니다. 처음 두 줄에서는 나는 데이터베이스에서 사용자에 대해 설정 한 무작위 18 바이트 16 진수를 만들고 다른 쪽 끝의 사용자에게도 동일한 auth_token을 보냅니다. 그러나 사용자가 동일한 auth_token을 보내 일부 데이터를 가져 오면 스크립트에서 데이터베이스를 검색 할 수 없습니다. 데이터베이스에서 쿼리 된 16 진수 코드에는 몇 가지 문제가 있습니다. 도와주세요.PHP bin2hex with mysql
$hex = bin2hex(openssl_random_pseudo_bytes('18'));
$database->executeObject('UPDATE tbluser SET user_auth_token="'.$hex.'" WHERE user_name="'.$_POST['uid'].'"');
...
...
...
}elseif ($_POST['query'] = "fetch" && !empty($_POST['auth_token'])){
$token = $_POST['auth_token'];
$uid = $database->executeObject('SELECT user_id AS id FROM tbluser WHERE user_auth_token="'.$token.'"');
if (!empty($uid)){
$fname = $database->executeObject('SELECT writer_first_name as fname FROM tblwriter WHERE user_id="'.$uid.'"')->fname;
echo $fname;
exit;
}else{ echo "Not Authorized"; exit; }
항상 SQL 쿼리로 들어가는 모든 것을 이스케이프 처리합니다! SQL 주입 공격에 취약합니다. – Sven
내 데이터베이스 클래스에서 처리하고 있습니다. –
여기에 SQL 주입 보호에 대한 설명이 있습니다. http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –