Jay*_*res 15 python sql security django sql-injection
如果将lamer输入直接插入到SQL查询中,则应用程序容易受到SQL注入的攻击,如下例所示:
dinossauro = request.GET['username']
sql = "SELECT * FROM user_contacts WHERE username = '%s';" % username
Run Code Online (Sandbox Code Playgroud)
删除表或任何东西 - 进行查询:
INSERT INTO table (column) VALUES('`**`value'); DROP TABLE table;--`**`')
Run Code Online (Sandbox Code Playgroud)
有什么办法可以防止这种情况发生?
Suo*_*uor 10
首先,您可能应该只使用Django ORM,它将阻止任何SQL注入的可能性.
如果由于任何原因你不能或不想那么你应该使用Python Database API.这是你在Django中通常这样做的方式:
from django.db import connection
cursor = connection.cursor()
cursor.execute('insert into table (column) values (%s)', (dinosaur,))
cursor.close()
Run Code Online (Sandbox Code Playgroud)
您还可以使用方便的 python包来减少样板:
from handy.db import do_sql
do_sql('insert into table (column) values (%s)', (dinosaur,))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19479 次 |
最近记录: |