SQL Server 교육 복습(4)

냐옹·2024년 4월 22일
0

SQL

목록 보기
18/18
로그 남기기
CREATE TABLE dbo.EmpSalaryLog(
	LogID int identity(1,1) PRIMARY KEY CLUSTERED,
	LogType char(1) NOT NULL,
	EmpID char(5) NOT NULL,
	EmpName nvarchar(4) NOT NULL,
	Salary int NULL,
	chgDate date DEFAULT GETDATE()
);

INSERT INTO dbo.Employee
	OUTPUT 'I', inserted.EmpID, inserted.EmpName, inserted.Salary
	INTO dbo.EmpSalaryLog(LogType, EmpID, EmpName, Salary )
	VALUES ('S0023',N'김새나', 'sana','F','2016-05-01',NULL,'MKT','010-5555-5555','KIMSAE@seoul.co.kr',4000);

SELECT * FROM dbo.EmpSalaryLog
SQL인젝션 공격
  • 예를 들어서 로그인 입력폼을 받아서 쿼리를 내부적으로 날린다고 쳐보자.
SELECT * FROM Users WHERE id = `입력폼으로 받은 값1` AND password = '입력폼으로 받은 값2`

이라고 쳐보자.

  • 근데 다음에 로그인 아이디에 ` OR 1 = 1-- 을 넣었다고 치면
SELECT * FROM Users WHERE id = `` OR 1 = 1-- AND pasword~~~

이 되버리는데 이렇게 되면 사실상
SELECT * FROM Users 이 되어버린다.
1 = 1은 항상 TRUE이고 OR 로 연결되었기 때문에 결국에 Users 테이블을 모두 보여줘서 정보유출이 발생하게 된다.

0개의 댓글