认证高级PHP讲师
일반적으로 매개변수화된 프로시저나 저장 프로시저는 괜찮습니다
可注入的sql:$id=$_REQUEST['id'];$name=$_REQUEST['name'];id=$id인 회원에서 *를 선택하세요.id='".$id."'"인 회원에서 *를 선택하세요;다음인 회원에서 *를 선택하세요. name='".$name."'";불可注入:id='".intval($id)."'";name이 있는 멤버에서 *를 선택하세요. =".sql_escape($name);
사용자 입력을 필터링하고, 유형 및 크기를 제한하고, SQL 문을 매개변수화합니다. 또한 웹 서비스의 매개변수 취약점도 고려해야 합니다.
JavaEE의 ReadyStatement 인터페이스를 사용하면 SQL 주입을 쉽게 방지할 수 있으며, 다양한 DataBase 제조업체의 드라이버에서 이를 잘 구현했습니다. Druid 연결 풀은 SQL을 필터링하여 주입을 방지하는 데에도 도움이 됩니다. Jenkins는 findBugs와 같은 일부 플러그인과 협력하여 가능한 SQL 주입 동작을 찾을 수 있습니다.
1/프런트엔드 입력은 jsoup를 사용하여 필터링됩니다. jsoup은 다양한 필터링 규칙을 사용자 정의할 수도 있습니다. 2/ibatis와 같은 ORM 프레임워크를 사용하여 SQL 실행 매개변수를 바인딩합니다.
일반적으로 매개변수화된 프로시저나 저장 프로시저는 괜찮습니다
可注入的sql:
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
id=$id인 회원에서 *를 선택하세요.
id='".$id."'"인 회원에서 *를 선택하세요;
다음인 회원에서 *를 선택하세요. name='".$name."'";
불可注入:
id='".intval($id)."'";
name이 있는 멤버에서 *를 선택하세요. =".sql_escape($name);
사용자 입력을 필터링하고, 유형 및 크기를 제한하고, SQL 문을 매개변수화합니다. 또한 웹 서비스의 매개변수 취약점도 고려해야 합니다.
JavaEE의 ReadyStatement 인터페이스를 사용하면 SQL 주입을 쉽게 방지할 수 있으며, 다양한 DataBase 제조업체의 드라이버에서 이를 잘 구현했습니다. Druid 연결 풀은 SQL을 필터링하여 주입을 방지하는 데에도 도움이 됩니다. Jenkins는 findBugs와 같은 일부 플러그인과 협력하여 가능한 SQL 주입 동작을 찾을 수 있습니다.
1/프런트엔드 입력은 jsoup를 사용하여 필터링됩니다. jsoup은 다양한 필터링 규칙을 사용자 정의할 수도 있습니다.
2/ibatis와 같은 ORM 프레임워크를 사용하여 SQL 실행 매개변수를 바인딩합니다.