안녕하세요 여러분. 저는 실제로 다음과 같은 문장을 발견했습니다.
<code>SELECT * FROM seller_item_classify where sid=$sid order by cweight asc ; </code>
여기서 $sid는 프런트 엔드에서 전달된 값이고, Seller_item_classify는 표시이며, sid는 테이블의 필드 이름입니다.
$sid에서 전달된 값이 우연히 'sid'인 경우 SQL은 다음과 같습니다. 예, 전체 테이블 쿼리가 발생합니다.
프로덕션 환경에서는 $sid 값이 숫자 값이거나 문자일 수 있으므로 PHP에서 프런트엔드 입력 값을 필터링해야 하나요?
이 문제에 대해 어떻게 생각하시나요?
안녕하세요 여러분. 저는 실제로 다음과 같은 문장을 발견했습니다.
<code>SELECT * FROM seller_item_classify where sid=$sid order by cweight asc ; </code>
여기서 $sid는 프런트 엔드에서 전달된 값이고, Seller_item_classify는 표시이며, sid는 테이블의 필드 이름입니다.
$sid에서 전달된 값이 우연히 'sid'인 경우 SQL은 다음과 같습니다. 예, 전체 테이블 쿼리가 발생합니다.
프로덕션 환경에서는 $sid 값이 숫자 값이거나 문자일 수 있으므로 PHP에서 프런트엔드 입력 값을 필터링해야 하나요?
이 문제에 대해 어떻게 생각하시나요?
<code>"SELECT * FROM seller_item_classify where sid='$sid' order by cweight asc ;"</code>
프런트엔드 입력값은 백엔드에서 필터링을 해야 하며, SQL 전처리를 사용하는 것을 권장합니다.
SQL 조건값에 '' 추가
<code>sid = '$sid'</code>
as 别名
효과가 있나요?
문제 해결을 위해 작은따옴표를 추가하세요
'SELECT * FROM Seller_item_classify where sid='.$sid.' order by cweight asc ;'
pdo 전처리 사용
<code><?php $sid = issset($_REQUEST['sid']) ? htmlspecialchars(trim($_REQUEST['sid'])) : ''; if (!$sid or $sid=='sid') { // 非法请求 这里可以抛出一些异常 }</code>