Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 通过限制字符防止SQL注入_Mysql_Sql_Sql Injection - Fatal编程技术网

Mysql 通过限制字符防止SQL注入

Mysql 通过限制字符防止SQL注入,mysql,sql,sql-injection,Mysql,Sql,Sql Injection,可以这样说,通过限制这个符号,我们就限制了SQL注入 "(引文) “(双引号) ;(分号) 因为据我所知,大多数SQL注入都是通过在输入的开头加引号或双引号来结束输入,然后用分号结束句子 如果是真的,请帮助我。如果不是真的,请为我提供一个示例,说明如何在不使用这些字符的情况下进行SQL注入。使用PDO可以防止SQL注入。您必须转义输入并对其进行清理。 例如,您有一个查询: Select col1 from table where id=$input_from_user 现在看看用户输入是12还

可以这样说,通过限制这个符号,我们就限制了SQL注入

  • "(引文)
  • “(双引号)
  • ;(分号)
  • 因为据我所知,大多数SQL注入都是通过在输入的开头加引号或双引号来结束输入,然后用分号结束句子


    如果是真的,请帮助我。如果不是真的,请为我提供一个示例,说明如何在不使用这些字符的情况下进行SQL注入。

    使用PDO可以防止SQL注入。您必须转义输入并对其进行清理。 例如,您有一个查询:

    Select col1 from table where id=$input_from_user
    
    现在看看用户输入是12还是1==1,然后直接在查询中输出。查询将始终返回结果


    PDO可以防止此类攻击。

    我喜欢这一个,它会从您的支票中滑过:

    ?id=13联合选择1,user(),3,4,5,6,7


    我不知道mysql的语法,这就是为什么我给出了一个基于sqlserver的示例,所以不要给出负号

    是的,这就足够了,但仍有一些其他保留工作会导致xml字段或xml操作出现诸如“&”和“”之类的问题

    当我们使用内联查询作为时,Sql注入是有效的(因此,始终使用过程来避免Sql注入)

    如果将值设为sql注入,则上述值将返回所有内容,即使用户没有权限:1=1--


    “可以说,通过限制这个符号,我们限制SQL注入。”——这完全不是。考虑到我把所有的输入都放在单引号或双引号中。所以在下面的例子中ID=“”。所以它需要使用“首先关闭输入,然后做我们想做的事情”。所以通过限制“注入不可能”,我想说注入是:“或者1=1——你为什么喜欢这个解决方案而不是一个被证明有效的解决方案?”?比如,是什么驱使你故意削弱你的应用程序的安全性?我正在仔细检查MySQL命令的漏洞,这成了我的一个问题,如果情况像我描述的那样,怎么可能进行注入。你为什么不检查任何答案呢?投票最多的一个演示了如何注入(根据问题限制)。
    Declare @var1 nvarchar(100) = 'column 1 like ''' + 'abc' + '%' -- suppose this will also pass from your c# or vb.net or java code as ("column1 like 'abc'")
    
    Declare @strsql nvarchar(500) 
    @strsql = 'Select * from table where ' + @var1
    
    exec @strsql 
    
    Declare @strsql nvarchar(500) 
    @strsql = 'Select * from table where 1=1--' 
    
    exec @strsql -- the sql injection will remove your all succeeding value