사용자 모델에서 findById 메서드를 사용하는 웹 서비스 (cakephp 2.4.7)를 개발 중입니다.
내가 가진 것은 :
$user = $this->User->findById($userid);
if (!$user) {
throw new NotFoundException(__('Invalid User'));
}
그리고 문제는 $userid == 2
내가 ID 2의 사용자를 얻는 경우 입니다. 그러나 (예를 들어) $userid == 2as
사용자에게 id를 가져옵니다 2
.
나는 그 문제는 생각 $userid
문자열이며 2as
이된다 2
.
문제를 어떻게 해결할 수 있습니까?
MySQL을 사용하고있을 가능성이 높으며 설명하는 것은 단순히 작동 방식입니다.
mysql> select * from posts where id = 1;
+----+-----------+------------------------+---------------------+----------+
| id | title | body | created | modified |
+----+-----------+------------------------+---------------------+----------+
| 1 | The title | This is the post body. | 2013-08-01 07:34:57 | NULL |
+----+-----------+------------------------+---------------------+----------+
1 row in set (0.00 sec)
mysql> select * from posts where id = "1and this text";
+----+-----------+------------------------+---------------------+----------+
| id | title | body | created | modified |
+----+-----------+------------------------+---------------------+----------+
| 1 | The title | This is the post body. | 2013-08-01 07:34:57 | NULL |
+----+-----------+------------------------+---------------------+----------+
1 row in set, 1 warning (0.00 sec)
이와 같은 입력으로 데이터베이스는 쿼리를 수행하기 전에 값을 정수로 캐스트합니다.
애플리케이션이 두 사용자 입력을 동일하게 처리하지 않도록하려면 사용자 입력 을 확인하고 사용하기 전에 숫자인지 확인해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다