>데이터 베이스 >MySQL 튜토리얼 >SQL 주입이란 무엇입니까? SQL 주입을 처음부터 이해하도록 안내합니다.

SQL 주입이란 무엇입니까? SQL 주입을 처음부터 이해하도록 안내합니다.

php是最好的语言
php是最好的语言원래의
2018-07-26 17:52:572812검색

SQL 인젝션을 처음부터 이해하기, SQL 인젝션이란? SQL 인젝션은 나만 데이터베이스를 조작할 수 있다는 뜻이다. 내용을 입력하고 나가기만 하면 되는데, 명령어만 입력하면 나도 모르게 데이터베이스가 작동하게 된다

SQL 인젝션

1.

  • 일반적인 로그인 시나리오인 다음 사례 시나리오를 살펴보세요.

SQL 주입이란 무엇입니까? SQL 주입을 처음부터 이해하도록 안내합니다.

  • 그리고 사용자 이름 ': –'을 입력하면 성공적으로 로그인할 수 있습니다. 아무렇게나 비밀번호를 ↓

SQL 주입이란 무엇입니까? SQL 주입을 처음부터 이해하도록 안내합니다.

  • 이 때 사용자 이름에 sql 기호를 써서 실제로 내부 sql을 일찍 종료하고 검색어를 주석 처리한 두 sql을 비교해보면 알 수 있다 문장 후반부에 조건을 추가하면 비밀번호 없는 로그인 효과를 얻을 수 있습니다.

SQL 주입이란 나만 데이터베이스를 조작할 수 있다는 뜻인데, 내용을 입력하고 나가기만 하면 되는데, 명령어를 입력하다 보니 나도 모르게 데이터베이스가 동작하게 된다

2. the 취약점

  • 잘못된 모양이 나타나는 이유는 위의 SQL이 동적 스플라이싱을 사용하므로 SQL이 전달되는 방식에 따라 SQL의 의미가 변경될 수 있기 때문입니다.

동적 접합은 Java에서 Java 변수와 SQL 문을 혼합하여 사용하는 것입니다. userName='"+userName+"' 및 비밀번호 = '"+password"인 사용자에서 *를 선택하세요.

  • 그래서 prepareStatement를 사용하세요. 매개변수화된 SQL은 먼저 의미 체계를 결정한 다음 매개변수를 전달함으로써 전달된 매개변수로 인해 SQL의 의미 체계가 변경되지 않습니다. (setInt, setString, setBoolean을 통해 매개변수 전달)

3. 매개변수화된 SQL 사용 사례

            //建立数据连接
            conn=ds.getConnection();
            //1.设置prepareStatement带占位符的sql语句
            PreparedStatement ptmt = conn.prepareStatement("select * from user where userName = ? and password = ?");
            ptmt.setString(1, "张三");      //2.设置参数
            ptmt.setString(2, "123456");
            rs=ptmt.executeQuery();     

            while(rs.next()){
                System.out.println("登陆成功");
                return;
            }
            System.out.println("登陆失败");

매개변수화된 기능:

1 명령문이 sql을 실행하는 방식 명령문:

stmt=conn.createStatement();
rs=stmt.executeQuery("select userName from user");

  • 2. 매개변수 설정

PerparedStatement는 Statement에서 상속되며, 이를 매개변수화하는 SQL 기능을 주로 사용합니다.

Repost: https://blog.csdn.net/qq_30258957/article/details/78145885

Added: 1.PreparedStatement는 SQL을 실행하는 데 사용되는 Statement를 확장합니다.

2.Statement는 static( 무조건) SQL ReadyStatement는 동적(조건부) SQL을 실행하는 데 적합합니다.

3.PreparedStatement는 주입 공격을 피할 수 있습니다.

관련 기사:

매우 안전하다고 생각되는 PHP 안티 SQL 주입

SQL 인젝션 심층이해 및 예방법

관련영상 :

SQL 인젝션 방어 - PHP 실용몰 개발 동영상 튜토리얼

위 내용은 SQL 주입이란 무엇입니까? SQL 주입을 처음부터 이해하도록 안내합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.