'SQLite3'에 해당되는 글 1건

  1. 2010.04.02 SQL injection on python+SQLite3
모처럼 약간 여유가 생겨서 웹코딩이나 좀 하고있는데

파이썬의 SQLite3 기본 라이브러리가 쿼리문의 테이블 이름에 있어서는

SQL injection 공격에 대한 방어를 안해주는것 같다.


예를들면 코드에 SQL문을 사용할때 포맷스트링을 사용하면 엄청난 문제가 발생할 수 있는데
cursor.execute("INSERT INTO tablename  VALUES (%s,%s)"%(value1,value2) )
이경우에 value1과 value2가 사용자에게 웹에서 받은 정보라고 해보면

value2
"2); DROP TABLE tablename; 아무거나~~"
이라고 하면 임의로 데이터를 다 날려버릴 수도 있는거잖아?

그래서 정석대로 안전하게 하면
cursor.execute("INSERT INTO tablename  VALUES (?,?)",(value1,value2) )
이렇게 하면 SQLite에서 안전하게 물음표를 value로 치환해주는데


cursor.execute("INSERT INTO? VALUES (?,?)",(value1,value2) )
이렇게 tablename에 해당하는 부분도 ?로 치환하면 에러가 나더라.
신고

'공부' 카테고리의 다른 글

NP, NP-COMPLETE, NP-HARD  (7) 2010.05.05
for문에서 j  (3) 2010.04.26
SQL injection on python+SQLite3  (0) 2010.04.02
Google Summer of Code2010 & CGAL  (0) 2010.03.30
O/R mapping  (0) 2010.02.26
Laplacian Pyramid on GPU  (1) 2010.01.13
Posted by youknow04


티스토리 툴바