파이썬에서 스크립팅을 시작했고 이상한 문제가 발생했습니다.파이썬 cgi 스크립트는 정수 만을 mysql 데이터베이스에 삽입합니다.
일부 값을 mysql 데이터베이스에 삽입하려고합니다. 데이터베이스 필드는 VARCHAR, UTF-8 유니 코드
파이썬 3.2을 사용하여및 WAMP 서버 2.2 (아파치 2.2.21, MySQL은 5.5.20)이다
나는 등 인쇄 (IME), 인쇄 (prezime)를 시도하는 경우 다른 페이지의 양식 값을 인쇄하므로 정확한 값을 얻고 있습니다. 이 데이터베이스
에 해당 값을 삽입
"INSERT INTO Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) VALUES ("aa","aa","aa","aa")"
내가 작성하는 경우 :로
나는 SQL 문을 작성하는 경우
sql = "INSERT INTO Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) VALUES (%s,%s,%s,%s)",(ime,prezime,email,tel)
는 내가 넣으면 마침내
작동 나던
SQL = % (IME, prezime, 이메일, 전화)
내가에만 넣어 경우 "Clanovi (CL_Ime, CL_Prezime, CL_Email, CL_Tel) 가치 (% s의 % s를 % s에 % s의) INTO INSERT" 데이터베이스에 커밋 할 양식 필드에 숫자를 입력하십시오. ime = 21 prezime = 232 이메일 = 123 tel = 123 글자를 쓴다면 새 행을 데이터베이스에 추가하지 마십시오. ime = smth prezime = blabla email = AA 전화 = (I 인쇄 (SQL) 내 쿼리가 마지막에 어떻게 생겼는지 볼을 퍼트) 다다
(나는이 방법은 보안 위험이 알고)
여기는 전체 코드입니다
#!c:\python32\python.exe
import MySQLdb
import cgi
print ("Content-type: text/html\n\n")
form = cgi.FieldStorage()
ime =form["ime"].value
prezime = form["prezime"].value
email= form["email"].value
tel = form["tel"].value
print(ime)
db = MySQLdb.connect("localhost","root","","biblioteka")
cursor = db.cursor()
sql = "INSERT INTO Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) VALUES (%s,%s,%s,%s)"%(ime,prezime,email,tel)
print(sql)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
시간을내어 도와 주셔서 감사합니다.
http://en.wikipedia.org/wiki/SQL_injection 또한 – SingleNegationElimination