大家好,我有一个简单的 ruby 脚本提供一个简单的 telegram-bot 功能。
但是我发现这个 telegram-bot 的脚本总是在一定时间之后 CPU 占用率就会 飙升,我没有找出哪里可能溢出,恳请大家帮帮我。
100% 是把一个核心吃满还是把所有核心吃满了?如果是后者那肯定是 handle_thread
方法里线程相关的问题了。如果是前者我读了一圈觉得有几个可能出现死循环问题的地方,但这脚本不太方便部署调试。
client = Mysql2::Client.new(:host => "127.0.0.1", :username => "root", :password => "XuHefeng", :database => "javlibrary") 建 AV 图书馆
你看这段代码,如果 str
里带有单引号,简单就出一个错,如果 str
是 "'; drop database ...;"
就注入攻击啦
client = Mysql2::Client.new(:host => "127.0.0.1",
:username => "root",
:password => "XuHefeng",
:database => "javlibrary")
result = client.query("SELECT * FROM video WHERE video.license='#{str}'")
if result.size == 0
client.close
return javlibrary_get(str)
end
出错后,client.close
就不执行了 (后面也同样), 随着时间的推移就会越来越多连接咯
原来是这样,那我是不是应该 catch 一下异常保证错误不出现呢?
还是应该专门写一个 method 保证整个查询是安全的呢?
你可以用 client.escape
http://www.rubydoc.info/github/brianmario/mysql2/file/README.md#Usage
另外我不知道你的 telegram bot 会否调用 listen() 多次... 如果你也不知道就最好防御性的保证一下...