Pri*_*cey 2 python sql-injection psycopg2 python-2.4 web.py
我正在写一个快速的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()
Run Code Online (Sandbox Code Playgroud)
我应该担心将i.input传递给db.select(或查询等),就像我作为vars的一部分一样吗?SQL注入的可能性等?
编辑:我一直在玩这个,试图让一些令人讨厌的事情发生.例如,使用引用,http:// localhost:8080 /?id = 13'或'x'='x会导致在异常中显示很好的转义sql:
<sql: 'select * from foo.table where id = "13\' or \'x\'=\'x"'>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了互联网提出的一些其他常见测试,并认为我很高兴web.py正在处理卫生处理......还有其他人可以发表评论吗?
http://webpy.org/cookbook/query说:
为防止SQL注入攻击,db.query还接受db.select中描述的"vars"语法:
Run Code Online (Sandbox Code Playgroud)results = db.query("SELECT * FROM users WHERE id=$id", vars={'id':10})
如果您信任"id"变量,这将逃脱用户输入.
所以我猜它就这么简单.
当然我意识到如果我要插入它,我仍然需要验证用户输入...
归档时间: |
|
查看次数: |
1617 次 |
最近记录: |