我刚刚注意到我的 mysql_real_escape_string 函数不在我的一些 php 脚本中的 '' 中,它容易受到注入(inject)和诸如 sleep(30) 之类的执行在我的生产网站上。
在大量阅读此处后,我将采用 PDO 路线并实现准备好的语句。但这还没有实现。
几个问题,我在我的日志中看到很多人在网上进行了注入(inject),但我看不到任何损害。站点运行以执行 sql 查询的用户只有 update/select/delete/insert 权限。
但我担心像 sleep(30) 这样的事情,什么不起作用,如果它们造成了我没有看到的任何损害?
您能告诉我在哪里检查是否有损坏,或者我至少可以安全地承受重大损坏吗?
他们可以更改隐藏的 mysql 设置或系统设置吗?
顺便说一下,我尝试在 centos 6+ linux 和 php 上运行最新更新。
编辑: 澄清一下,数据库几乎是空的,我不担心那里的数据和密码哈希 sh512。所以里面的数据并不重要,因为这是我正在编写的一个新应用程序。但我担心他们是否更改了系统或数据库上的任何内容,我应该担心。我看到的一些注入(inject)有 java 等,但日志很大,需要时间来检查它。我还在注入(inject)中看到了一些模式字符串。
现在的问题是他们可以读取我的模式信息或修改它们吗?如果它是受限用户,为什么像 sleep 这样的功能会起作用?他们还可以运行哪些其他功能?
注意我在同一个 MySQL 中有其他数据库。我应该担心这些吗?
'' 我的意思是: select * from dbname 其中 id=scaped_string 我应该把它放在引号里
最佳答案
检查数据是否受到损坏取决于数据库中的数据类型。如果仔细检查后没有发现任何问题,那么很可能没有问题。如果您的数据大小适中,这将很困难或不可能。
有许多自动机器人在互联网上漫游,寻找易受 SQL 注入(inject)攻击的代码。他们的尝试可能就是您在日志中看到的。仅仅因为进行了尝试并不一定意味着发生了入侵。
另请记住,您不一定有数据被盗的证据。确定这一点的最佳方法是获取您的服务器日志并在当前服务器的副本上重播它们,检查您是否取回任何数据。
关于php - mysql注入(inject)破坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731983/
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我今天看到了一个ruby代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
最近,我安装了OSXMavericks,它似乎弄乱了我的开发环境。我在运行“railsnewfirst_app”后收到此消息:Youruseraccountisn'tallowedtoinstalltothesystemRubygems.Youcancancelthisinstallationandrun:bundleinstall--pathvendor/bundletoinstallthegemsinto./vendor/bundle/,oryoucanenteryourpasswordandinstallthebundledgemstoRubygemsusingsudo.Pass
我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject
我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi
升级到OSXYosemite后,我现有的pow.cx安装不起作用。升级到最新的pow.cx无效。通过事件监视器重新启动它也没有成功。 最佳答案 卸载(!)并重新安装解决了这个问题。curlget.pow.cx/uninstall.sh|shcurlget.pow.cx|sh 关于ruby-on-rails-OSXYosemite更新破坏了pow.cx,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q
我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有
Ruby中防止SQL注入(inject)的好方法是什么? 最佳答案 直接使用ruby?使用准备好的语句:require'mysql'db=Mysql.new('localhost','user','password','database')statement=db.prepare"SELECT*FROMtableWHEREfield=?"statement.execute'value'statement.fetchstatement.close 关于ruby-防止SQL注入(inject
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它