Я пишу быстрое приложение web.py и беру данные из web.input ...
import web
urls = (
'/', 'something',
)
app = web.application(urls, globals())
db = web.database(dbn='postgres', db='database', user='username', password='password', host='127.0.0.1')
class something:
def GET(self):
i = web.input()
return db.select('foo.table', where="column=$variable", vars={'variable':i.input, })
if __name__ == "__main__": app.run()
Должен ли я беспокоиться о передаче i.input в db.select (или запросе и т. Д.), Как я делаю как часть vars? Возможности SQL-инъекций и т. Д.?
Edit:
Я сам играл с этим, пытаясь добиться чего-то неприятного. Например, при игре с кавычками http://localhost:8080/?id=13' или 'x' = 'x приводит к тому, что sql с хорошим экранированием отображается в исключениях:
<sql: 'select * from foo.table where id = "13\' or \'x\'=\'x"'>
Я попробовал несколько других распространенных тестов, которые предлагает интернет, и я думаю, что я вполне доволен, что web.py занимается санитарией ... Кто-нибудь еще сможет прокомментировать?