
SQLite3::prepare 메서드를 사용하여 SQL 쿼리를 실행할 때 SQL Injection 공격에 대한 보안을 구현하는 방법은 두 가지가 있습니다.
1. 쿼리문에 ?를 사용하여 변수를 대입하는 방법입니다. 예를 들어, 다음과 같은 쿼리문을 작성할 때, SQL Injection 공격에 대한 보안을 구현하는 방법은 다음과 같습니다.
#hostingforum.kr
ruby
db = SQLite3::Database.new('example.db')
query = "SELECT * FROM users WHERE name = ? AND age = ?"
db.prepare(query).execute(name, age)
2. 쿼리문에 변수를 직접 포함시키는 방법은 안전하지 않습니다. 예를 들어, 다음과 같은 쿼리문을 작성할 때, SQL Injection 공격에 대한 보안을 구현하지 않았습니다.
#hostingforum.kr
ruby
db = SQLite3::Database.new('example.db')
query = "SELECT * FROM users WHERE name = '#{name}' AND age = #{age}"
db.prepare(query).execute
이 방법은 SQL Injection 공격에 취약합니다. 따라서 쿼리문에 ?를 사용하여 변수를 대입하는 방법을 사용하는 것이 좋습니다.
SQLite3::prepare 메서드의 첫 번째 인수에 쿼리문을 전달할 때, 쿼리문에 변수를 직접 포함시키는 것이 안전한지 궁금합니다. 하지만, 위의 예시에서 보듯이, 쿼리문에 변수를 직접 포함시키는 방법은 안전하지 않습니다. 따라서 쿼리문에 ?를 사용하여 변수를 대입하는 방법을 사용하는 것이 좋습니다.
2025-07-17 23:16