python中如何防止sql注入
python访问数据库的底层库很多,以pymysql为例, 它在执行sql前,会对sql中的特殊字符进行转义,如
- 字符转义
def escape_string(value, mapping=None):
"""escape_string escapes *value* but not surround it with quotes.
Value should be bytes or unicode.
"""
if isinstance(value, unicode):
return _escape_unicode(value)
assert isinstance(value, (bytes, bytearray))
value = value.replace('\\', '\\\\')
value = value.replace('\0', '\\0')
value = value.replace('\n', '\\n')
value = value.replace('\r', '\\r')
value = value.replace('\032', '\\Z')
value = value.replace("'", "\\'")
value = value.replace('"', '\\"')
return value
- 执行sql的正确方法,不要在sql中拼接参数,字符转义只会针对参数args
# query作为sql模板,args为将要传入的参数
execute(query, args=None)
- django/sqlalchemy
- sql注入检测工具
sqlmap
《寿康宝鉴》有声书
寿康宝鉴百话有声书(mp3)
百度网盘 https://pan.baidu.com/s/1rs5k7RTB9DxgdCuG-mSzog 密码 9lf1