• R/O
  • SSH
  • HTTPS

shibuya-trac: Commit


Commit MetaInfo

Revision793 (tree)
Zeit2011-04-14 21:31:08
Autorokamototk

Log Message

SQLインジェクションを修正。

Ändern Zusammenfassung

Diff

--- plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete_edit.py (revision 792)
+++ plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete_edit.py (revision 793)
@@ -30,9 +30,9 @@
3030 if actionName=='delete':
3131 question_id = req.args.get('question_id')
3232 try:
33- sql = ("""delete from question where enquete_id = %d and question_id=%d""" ) % (int(enquete_id),int(question_id))
33+ sql = "delete from question where enquete_id = %s and question_id=%s"
3434 _self.log.debug('%s' % sql)
35- cursor.execute(sql)
35+ cursor.execute(sql, (int(enquete_id),int(question_id)))
3636 except Exception,e:
3737 _self.log.debug('%s' % e)
3838 raise e
@@ -39,23 +39,23 @@
3939 elif actionName =='savesort':
4040 listorder = req.args.get('listorder').splitlines()
4141 for idx, question_id in enumerate(listorder):
42- sql = ("""update question set sort_no=%d where enquete_id='%s' and question_id='%s' """ ) % (idx, enquete_id, question_id)
42+ sql = "update question set sort_no=%s where enquete_id=%s and question_id=%s "
4343 _self.log.debug('%s' % sql)
44- cursor.execute(sql)
44+ cursor.execute(sql, (idx, enquete_id, question_id))
4545 db.commit()
4646 message = '並び順を保存しました。'
4747 #設問一覧検索
4848 title = ""
4949 try:
50- sql = ("""SELECT title FROM enquete where enquete_id = %d""" % (int(enquete_id)))
50+ sql = "SELECT title FROM enquete where enquete_id = %s"
5151 _self.log.debug('%s' % sql)
52- cursor.execute(sql)
52+ cursor.execute(sql, (int(enquete_id),))
5353 row = cursor.fetchone()
5454 title = row[0]
5555
56- sql = ("""SELECT enquete_id, question_id, question_title, type, detail FROM question where enquete_id = %d order by sort_no""" % (int(enquete_id)))
56+ sql = "SELECT enquete_id, question_id, question_title, type, detail FROM question where enquete_id = %s order by sort_no"
5757 _self.log.debug('%s' % sql)
58- cursor.execute(sql)
58+ cursor.execute(sql, (int(enquete_id),))
5959
6060 except Exception,e:
6161 _self.log.debug('%s' % e)
@@ -91,9 +91,9 @@
9191 if actionName=='edit':
9292 question_id = req.args.get('question_id')
9393 try:
94- sql = ("""SELECT enquete_id, question_id, question_title, type, detail FROM question where enquete_id = %d and question_id=%d""" ) % (int(enquete_id),int(question_id))
94+ sql = "SELECT enquete_id, question_id, question_title, type, detail FROM question where enquete_id = %s and question_id=%s"
9595 _self.log.debug('%s' % sql)
96- cursor.execute(sql)
96+ cursor.execute(sql, (int(enquete_id),int(question_id)))
9797 row = cursor.fetchone()
9898 except Exception,e:
9999 _self.log.debug('%s' % e)
@@ -110,15 +110,15 @@
110110
111111 try:
112112 if question_id:
113- sql = ("""update question set question_title='%s',type=%d,detail='%s' where enquete_id = %d and question_id=%d""" ) % (question_title ,int(type), detail, int(enquete_id),int(question_id))
113+ sql = "update question set question_title=%s,type=%s,detail=%s where enquete_id = %s and question_id=%s"
114114 _self.log.debug('%s' % sql)
115- cursor.execute(sql)
115+ cursor.execute(sql, (question_title ,int(type), detail, int(enquete_id),int(question_id)))
116116 else:
117117 when = datetime.now(utc)
118118 when_ts = to_timestamp(when)
119- sql = ("""insert into question values(%d,%d,'%s',%d,'%s',%d)""" ) % (int(enquete_id) , when_ts, question_title, int(type), detail, 0)
119+ sql = """insert into question values(%s,%s,%s,%s,%s,%s)"""
120120 _self.log.debug('%s' % sql)
121- cursor.execute(sql)
121+ cursor.execute(sql, (int(enquete_id) , when_ts, question_title, int(type), detail, 0))
122122 except Exception,e:
123123 _self.log.debug('%s' % e)
124124 raise e
--- plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/__init__.py (revision 792)
+++ plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/__init__.py (revision 793)
@@ -1 +1,2 @@
1+# -*- coding: utf-8 -*-
12 from enquete import *
--- plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete_answer.py (revision 792)
+++ plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete_answer.py (revision 793)
@@ -46,14 +46,14 @@
4646 when_ts = to_timestamp(when)
4747 try:
4848 sql = [
49- ("""delete from answer where enquete_id = %d and user_id='%s'""" ) % (int(enquete_id),digest_user),
50- ("""delete from answer_detail where enquete_id = %d and user_id='%s'""" ) % (int(enquete_id),digest_user),
51- ("""insert into answer values( %d, '%s' , %d, '%s')""") % (int(enquete_id),digest_user, 0, when)
49+ ["delete from answer where enquete_id = %s and user_id=%s",(int(enquete_id),digest_user)],
50+ ["delete from answer_detail where enquete_id = %s and user_id=%s" ,(int(enquete_id),digest_user)],
51+ ["insert into answer values( %s, %s , %s, %s)" ,(int(enquete_id),digest_user, 0, when)]
5252 ]
5353 for s in sql:
5454 try:
5555 _self.log.debug('%s' % s)
56- cursor.execute(s)
56+ cursor.execute(s[0],s[1])
5757 except Exception,e:
5858 _self.log.debug('%s' % e)
5959 None
@@ -70,13 +70,13 @@
7070
7171 if isinstance(answer,list):
7272 for ans in answer:
73- sql = ("""insert into answer_detail values( %d,'%s',%d,'%s')""" % (int(enquete_id),digest_user,int(q_id),ans))
73+ sql = """insert into answer_detail values( %s,%s,%s,%s)"""
7474 _self.log.debug('%s' % sql)
75- cursor.execute(sql)
75+ cursor.execute(sql, (int(enquete_id),digest_user,int(q_id),ans))
7676 else:
77- sql = ("""insert into answer_detail values( %d,'%s',%d,'%s')""" % (int(enquete_id),digest_user,int(q_id),answer))
77+ sql = """insert into answer_detail values( %s,%s,%s,%s)"""
7878 _self.log.debug('%s' % sql)
79- cursor.execute(sql)
79+ cursor.execute(sql,(int(enquete_id),digest_user,int(q_id),answer))
8080
8181 count = count + 1
8282 except Exception,e:
@@ -98,16 +98,16 @@
9898 chart_map={}
9999 group_id = req.args.get('group_id')
100100 try:
101- sql = ("""SELECT title,status FROM enquete where enquete_id = %d""" % (int(enquete_id)))
101+ sql = "SELECT title,status FROM enquete where enquete_id = %s"
102102 _self.log.debug('%s' % sql)
103- cursor.execute(sql)
103+ cursor.execute(sql, (int(enquete_id),))
104104 row = cursor.fetchone()
105105 title = row[0]
106106 status = row[1]
107107
108- sql = ("""SELECT enquete_id, question_id, question_title, type, detail FROM question where enquete_id = %d order by sort_no""" % (int(enquete_id)))
108+ sql = "SELECT enquete_id, question_id, question_title, type, detail FROM question where enquete_id = %s order by sort_no"
109109 _self.log.debug('%s' % sql)
110- cursor.execute(sql)
110+ cursor.execute(sql, (int(enquete_id),))
111111
112112 for enquete_id,question_id, question_title, type, detail in cursor:
113113 question = {'enquete_id':enquete_id, 'question_id':question_id, 'question_title':question_title, 'type':type, 'detail':detail}
@@ -117,9 +117,9 @@
117117 #アンケート集計
118118 if actionName=='count' or actionName=='group':
119119 # アンケート結果
120- sql = ("""SELECT enquete_id, question_id, answer ,count(answer) as cnt FROM answer_detail where enquete_id = %d group by question_id,answer order by cnt desc""" % (int(enquete_id)))
120+ sql = "SELECT enquete_id, question_id, answer ,count(answer) as cnt FROM answer_detail where enquete_id = %s group by question_id,answer order by cnt desc"
121121 _self.log.debug('%s' % sql)
122- cursor.execute(sql)
122+ cursor.execute(sql, (int(enquete_id),))
123123 for enquete_id, question_id, answer, cnt in cursor:
124124 al = []
125125 if question_id in answer_map:
@@ -139,9 +139,9 @@
139139 chart_map[question_id] = url
140140
141141
142- sql = ("""SELECT question_id, answer FROM answer_detail where enquete_id = %d and user_id='%s'""" % (int(enquete_id), digest_user))
142+ sql = "SELECT question_id, answer FROM answer_detail where enquete_id = %s and user_id=%s"
143143 _self.log.debug('%s' % sql)
144- cursor.execute(sql)
144+ cursor.execute(sql, (int(enquete_id), digest_user))
145145
146146 for question_id, answer in cursor:
147147 answer = {'question_id':question_id, 'answer':answer}
--- plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete.py (revision 792)
+++ plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete.py (revision 793)
@@ -124,16 +124,16 @@
124124 #cursor.execute("""delete from answer where enquete_id = %d""" % (int(enquete_id)))
125125 #cursor.execute("""delete from answer_detail where enquete_id = %d""" % (int(enquete_id)))
126126 sql = [
127- ("""delete from enquete where enquete_id = %d""") % (int(enquete_id)),
128- ("""delete from question where enquete_id = %d""") % (int(enquete_id)),
129- ("""delete from answer where enquete_id = %d""") % (int(enquete_id)),
130- ("""delete from answer_detail where enquete_id = %d""") % (int(enquete_id))
127+ "delete from enquete where enquete_id = %s" ,
128+ "delete from question where enquete_id = %s" ,
129+ "delete from answer where enquete_id = %s" ,
130+ "delete from answer_detail where enquete_id = %s"
131131 ]
132132 cursor = db.cursor()
133133 for s in sql:
134134 try:
135135 self.log.debug('%s' % s)
136- cursor.execute(s)
136+ cursor.execute(s ,(int(enquete_id),))
137137 except Exception,e:
138138 self.log.debug('%s' % e)
139139 None
@@ -156,19 +156,19 @@
156156 try:
157157 if actionName == 'open':
158158 change_status = 1
159- sql = ("""update enquete set status=%d,open_date = '%s' where enquete_id = %d""" ) % (change_status,when,int(enquete_id))
159+ sql = "update enquete set status=%s,open_date = %s where enquete_id = %s"
160160 self.log.debug('%s' % sql)
161- cursor.execute(sql)
161+ cursor.execute(sql, (change_status,when,int(enquete_id)))
162162 elif actionName == 'close':
163163 change_status = 0
164- sql = ("""update enquete set status=%d,open_date = '' where enquete_id = %d""" ) % (change_status,int(enquete_id))
164+ sql = "update enquete set status=%s,open_date = '' where enquete_id = %s"
165165 self.log.debug('%s' % sql)
166- cursor.execute(sql)
166+ cursor.execute(sql, (change_status,int(enquete_id)))
167167 elif actionName == 'expire':
168168 change_status = 2
169- sql = ("""update enquete set status=%d where enquete_id = %d""" ) % (change_status,int(enquete_id))
169+ sql = """update enquete set status=%s where enquete_id = %s"""
170170 self.log.debug('%s' % sql)
171- cursor.execute(sql)
171+ cursor.execute(sql, (change_status,int(enquete_id)))
172172
173173 except Exception,e:
174174 self.log.debug('%s' % e)
@@ -178,18 +178,18 @@
178178 error = "アンケートのオーナではありません。"
179179 #アンケート一覧検索
180180 try:
181- sql = ("""SELECT e0.*,strftime('%Y/%m/%d %H:%M:%S',a2.update_date) as answer_date from (""")
182- sql = sql +("""SELECT e.enquete_id as enquete_id, e.title as title, strftime('%Y/%m/%d %H:%M:%S',e.update_date) as upd_date, e.create_user,""")
183- sql = sql + (""" strftime('%Y/%m/%d %H:%M:%S',e.open_date) as open_date, e.status as status,e.expire_date as expire_date, e.description as description, count(a.user_id) cnt FROM enquete e""")
184- sql = sql + (""" left outer join answer a on a.enquete_id=e.enquete_id""")
181+ sql = """SELECT e0.*,strftime('%Y/%m/%d %H:%M:%S',a2.update_date) as answer_date from (
182+ SELECT e.enquete_id as enquete_id, e.title as title, strftime('%Y/%m/%d %H:%M:%S',e.update_date) as upd_date, e.create_user,
183+ strftime('%Y/%m/%d %H:%M:%S',e.open_date) as open_date, e.status as status,e.expire_date as expire_date, e.description as description, count(a.user_id) cnt FROM enquete e
184+ left outer join answer a on a.enquete_id=e.enquete_id"""
185185 if req.authname != 'admin':
186186 #admin以外はオーナが自分のアンケートか、公開受付中、受付終了のみ
187- sql = sql + (""" where e.create_user='%s' or e.status in (1,2)""" ) % (req.authname)
188- sql = sql + (""" group by e.enquete_id""")
187+ sql = sql + " where e.create_user='%s' or e.status in (1,2)" % req.authname
188+ sql = sql + " group by e.enquete_id"
189189 digest_user = md5.new(req.authname).hexdigest()
190- sql = sql + (""" ) e0 left outer join answer a2 on a2.enquete_id=e0.enquete_id and a2.user_id = '%s'""") % (digest_user)
190+ sql = sql + " ) e0 left outer join answer a2 on a2.enquete_id=e0.enquete_id and a2.user_id = %s"
191191 self.log.debug('%s' % sql)
192- cursor.execute(sql)
192+ cursor.execute(sql, (digest_user,))
193193
194194 except Exception,e:
195195 self.log.debug('%s' % e)
@@ -215,8 +215,8 @@
215215
216216 def checkOwner(self,db,user,enquete_id):
217217 cursor = db.cursor()
218- sql = ("""SELECT create_user,status FROM enquete where enquete_id = %d""" % (int(enquete_id)))
219- cursor.execute(sql)
218+ sql = "SELECT create_user,status FROM enquete where enquete_id = %s"
219+ cursor.execute(sql, (int(enquete_id),))
220220 row = cursor.fetchone()
221221 if row[0] == user:
222222 return True,row[1]
--- plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete_title.py (revision 792)
+++ plugins/enqueteplugin/trunk/EnquetePlugin/src/enquete/enquete_title.py (revision 793)
@@ -36,11 +36,13 @@
3636 try:
3737 sql = ''
3838 if enquete_id == '':
39- sql = ("""insert into enquete values(%d,'%s',%d, '','%s','%s','%s','%s')""") % (when_ts ,title, 0, when, req.authname , expire_date, description)
39+ sql = "insert into enquete values(%s,%s,%s, '',%s,%s,%s,%s)"
40+ _self.log.debug('%s' % sql)
41+ cursor.execute(sql, (when_ts ,title, 0, when, req.authname , expire_date, description))
4042 else:
41- sql = ("""update enquete set title='%s',expire_date='%s',update_date='%s',description='%s' where enquete_id='%s'""") % (title, expire_date, when , description, enquete_id)
42- _self.log.debug('%s' % sql)
43- cursor.execute(sql)
43+ sql = "update enquete set title=%s,expire_date=%s,update_date=%s,description=%s where enquete_id=%s"
44+ _self.log.debug('%s' % sql)
45+ cursor.execute(sql, (title, expire_date, when , description, enquete_id))
4446 except Exception,e:
4547 _self.log.debug('%s' % e)
4648 raise e
@@ -58,9 +60,9 @@
5860 description = ""
5961 try:
6062 if actionName == 'update':
61- sql = ("""SELECT title,expire_date,description FROM enquete where enquete_id = %d""" % (int(enquete_id)))
63+ sql = "SELECT title,expire_date,description FROM enquete where enquete_id = %s"
6264 _self.log.debug('%s' % sql)
63- cursor.execute(sql)
65+ cursor.execute(sql, (int(enquete_id),))
6466 row = cursor.fetchone()
6567 title = row[0]
6668 expire_date = row[1]
--- plugins/enqueteplugin/trunk/EnquetePlugin/src/setup.py (revision 792)
+++ plugins/enqueteplugin/trunk/EnquetePlugin/src/setup.py (revision 793)
@@ -1,7 +1,7 @@
11 from setuptools import find_packages, setup
22
33 setup(
4- name='TracEnquetePlugin', version='0.3.1',
4+ name='TracEnquetePlugin', version='0.3.2',
55 packages=find_packages(exclude=['*.tests*']),
66 entry_points = {'trac.plugins':
77 ['enquete.enquete = enquete.enquete',],},
Show on old repository browser