我正在寫一個快速web.py應用程序,並從web.input取數據...使用web.py的web.database時應該如何防止濫用?
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(或查詢等),因爲我做的作爲變種的一部分? SQL注入的可能性等?
編輯: 我一直在這個自己打轉轉,試圖得到一些討厭happenning。使用引號例如播放,http://localhost:8080/?id=13' or 'x' ='x結果很好地逃脫了被顯示在例外SQL:
<sql: 'select * from foo.table where id = "13\' or \'x\'=\'x"'>
我已經嘗試了一些其他常見的測試,互聯網提出並覺得我很幸福web.py被處理與sanitisation ...會有其他人能夠評論?
當您將它從數據庫中取出時,請不要忘記將它轉義出來... –