Questions tagged «sql-injection»

有关SQL注入漏洞的问题。

6
存储过程是否可以防止SQL注入?
存储过程可以防止对PostgreSQL数据库进行SQL注入攻击吗?我进行了一些研究,发现即使仅使用存储过程,SQL Server,Oracle和MySQL也不会对SQL注入造成威胁。但是,PostgreSQL中不存在此问题。 PostgreSQL核心中的存储过程实现是否可以防止SQL注入攻击或其他?还是即使我们仅使用存储过程,PostgreSQL也容易受到SQL注入的影响吗?如果是这样,请给我看一个例子(例如书籍,网站,纸张等)。


2
为什么在存储过程中的此查询上不发生SQL注入?
我做了以下存储过程: ALTER PROCEDURE usp_actorBirthdays (@nameString nvarchar(100), @actorgender nvarchar(100)) AS SELECT ActorDOB, ActorName FROM tblActor WHERE ActorName LIKE '%' + @nameString + '%' AND ActorGender = @actorgender 现在,我尝试做这样的事情。也许我做错了,但是我想确保这样的过程可以防止任何SQL注入: EXEC usp_actorBirthdays 'Tom', 'Male; DROP TABLE tblActor' 下图显示了以上在SSMS中执行的SQL,结果正确显示,而不是错误: 顺便说一句,我在查询完成执行后在分号后添加了该部分。然后我再次执行它,但是当我检查表tblActor是否存在时,它仍然存在。难道我做错了什么?还是这真的防注射?我想我也想问的是这样的存储过程是否安全?谢谢。

2
如何将笑脸插入MySQL(😊)
我在MySQL 5.5.21上,尝试插入'\ xF0 \ x9F \ x98 \ x8A'笑脸字符。但是对于我的一生,我不知道该怎么做。 根据我一直在阅读的各种论坛,这是可能的。但是只要我尝试一下,数据就会被截断。 mysql> INSERT INTO hour ( `title`, `content`, `guid` , `published` , `lang` , `type` , `indegree` , `lon` , `lat` , `state` , `country` , `hour` ) VALUES ( "title" , "content 😊 content" , "guid" , 1, 1, "WEBLOG", …


3
有没有办法打破字符串并注入SQL,而无需在oracle中使用单引号?
我正在测试基于oracle的应用程序,并且发现以下代码: Query =“从雇员那里选择名称,其中id ='” + PKID +“';;” 即查询字符串包含直接从URL获得的PKID值周围的引号。 显然,这是一个经典的SQL注入等待中……除非应用程序位于CA SiteMinder后面,否则它将阻止任何带有单引号(任何形式)的URL传递给应用程序。 有没有办法打破字符串并注入SQL而无需使用单引号? 编辑:抱歉,我应该更清楚-我知道应该如何编写,但是我需要说服人们这是一个可利用的问题。目前,由于它落后于siteminder,后者阻止了单引号,因此这将是低优先级的解决方案。

1
什么函数在SQL Server的dynamic-sql中引用标识符?
用于动态sql生成的SQL Server安全引用标识符的方法是什么。 MySQL有 quote_identifier PostgreSQL有 quote_ident 如何确保给定动态生成的语句的动态生成的列名称,该列本身不是SQL注入攻击。 假设我有一条SQL语句, SELECT [$col] FROM table; 基本上与 'SELECT [' + $col + '] FROM table;' 什么阻止了注射攻击 $col = "name] FROM sys.objects; \r\n DROP TABLE my.accounts; \r\n\ --"; 导致 SELECT [name] FROM sys.objects; DROP TABLE my.accounts; -- ] FROM table;

1
我们是否仍应使用QUOTENAME防止注入攻击?
我今天正在看一个旧的存储过程,发现它quotename在输入参数上使用了。经过一番挖掘以找出确切的功能后,我遇到了这个站点。我现在了解它的作用以及如何使用它,但是该网站称它被用作SQL注入攻击的缓解措施。当我过去使用asp.net开发直接查询数据库的应用程序时,我会使用ADO.Net参数将用户输入作为文字值传递,而从不真正担心在存储过程中对其进行保护。 我现在正在编写一个存储过程,该存储过程将由我不编写的应用程序使用,因此我需要在过程级别尝试防止注入攻击,这是quotename最好的方法,或者是否有更新的功能/更好的方法方法? 使我了解这种思维模式的代码(@parm1是用户输入参数): 'SELECT project [Project], project_desc [Description], customer [Customer], cpnyid [Company] FROM PJPROJ (nolock) where project like ' + quotename(@parm1,'''') + '

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.