flask的数据库操作-防范sql注入

最近写代码,用flask的次数比较多。

这货还真是挺好用的,简单方便。

不过,写web程序,一切用户数据都是脏数据,需要防范各种攻击(xss啦,sqlinjection啦)。

sql注入(sql injection)是最最常见的web攻击方式了。查看

刚熟悉写flask的时候(其实也就是几天前),代码都是这样的:

1
2
3
con = get_db()
c = con.cursor()
c.execute("update user set email='{}',password='{}'".format(email,password))

看起来就怪怪的……

果然,查阅文档后:

Security Note

Be sure to use question marks when building SQL statements, as done in theexample above. Otherwise, your app will be vulnerable to SQL injection when you use string formatting to build SQL statements.See Using SQLite 3 with Flask for more.

所以说,还是这种方式会安全:

1
2
3
con = get_db()
c = con.cursor()
c.execute("insert or IGNORE INTO user (email,password,level) values (?,?,1)" , [email,password])

算是个小tips吧~

ShadowSocks自助系统使用教程

服务器被封,已经停止发放了……

最近share给别人的shadowsocks账号被滥用。流量一扫光……md,2T啊……

不得已,需要分隔账号并控制流量。

之前看shadowsocks的manager功能,感觉可以,也自己定制了点功能,于是就花了些时间自制了个自助系统。

(额,重新做轮子的原因是,类似系统都是收费用的,修改太麻烦了,自己做反而简单)

以下是自助系统的简单教程。前端苦手,勿喷,为这货特意学了点BootStrap库(这货有点玄学……)

继续阅读···

Shadowsocks的Manager功能

shadowsocks的代码中,包含了Manager功能。可以:

  • 动态增删端口
  • 接收统计信息
  • 检测运行状态(心跳)

大概的启动方式,就是指定--manager-port。然后ss会进入manager mode,并在manager-port上启动一个UDP服务,等待命令。

命令格式大概就是command: {json}

所以,可以比较自由的添加功能。

如:

  • 每端口的流量统计信息(单独查询)
  • 动态更改密码(删除后重新加载)

这块蛮好玩的,试试看~

Win10下打开telnet功能

昨天调试一个tcp的控制协议,懒得自写测试程序。反正是基于字符串的协议,telnet理论就够了。

可是,nnd,win10竟然没有默认安装这货! 用putty,情何以堪……

1
dism /online /Enable-Feature /FeatureName:TelnetClient

以上命令输入到命令行(管理员权限的),即可打开win10的自带telnet功能。

继续阅读···