SQL 注入在 winform 中有效吗?
我正在用 C# 制作一个 Windows 软件。我已阅读有关 sql-injection 的内容,但我没有发现它适用于我的应用程序。
SQL 注入在 winforms 中有效吗?
如果是的话如何预防。
编辑: 我正在使用文本框来读取用户名和密码。通过使用 textboxex 我发现文本框中的文本位于双引号之间(""
)。所以我没有发现它有效。
当我在文本框中使用引号 "
OR '
时,文本将被读取为 \"
OR \'
示例:
...................
USER NAME: | a" OR "1"=="1 |
```````````````````
// it is read as textBox1.Text = "a\" OR \"1\"==\"1";
I am making an windows software in c#. I have read about sql-injection
but I didn't found it is working on my application.
Do SQL Injection works in winforms?
If yes how to prevent them.
EDIT:
I am using a textboxes for reading user-name and password. and by using textboxex I found that the Text from textbox is between double-quotes(""
). So I didn't found it to be worked.
And when, I use Quotes "
OR '
in Textbox, the text is read as \"
OR \'
Example:
...................
USER NAME: | a" OR "1"=="1 |
```````````````````
// it is read as textBox1.Text = "a\" OR \"1\"==\"1";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
SQL注入是一个普遍问题,不依赖于任何技术。如果您使用 .NET 并希望防止 SQL 注入,请始终使用 SqlParameter 而不是字符串连接。
SQL injection is general issue not depending on any technology. If you using .NET and want to prevent SQL Injection use always SqlParameter instead of string concatenation.
是的。防止它的最简单方法是使用 SqlParameter s 用于发送到数据库的任何用户输入。或者不使用
SqlDataAdapter
并使用实体框架。Yes. Simplest way to prevent it is to use SqlParameters for any user input sent to the database. Or don't use the
SqlDataAdapter
and use the Entity Framework instead.SQL 注入是通过在动态构建的 SQL 语句(称为动态 SQL)中直接使用用户输入而引起的,这使用户能够破坏 SQL 或“注入”自己的 SQL 代码。
使用存储过程或带有参数的 SQL 可以解决这个问题。
所以是的,如果 SQL 是这样编码的,那么这种情况可能会发生在 winforms 中。
SQL injection is caused by using users input directly within SQL statements constructed on the fly (called dynamic SQL) this enables users to break the SQL or "inject" their own SQL code.
Using Stored Procedures or SQL with parameters gets around this.
So yes this can occur within winforms if the SQL is coded that way.
Winforms 中可以进行 SQL 注入。您可以遵循以下策略
为用户提供尽可能少的权限
使用
dbStoredProcedureOnlyAccessAmar
数据库角色,如下所示<前><代码>使用[YOURDb]
去
创建角色 [dbStoredProcedureOnlyAccessAmar]
去
创建后
基于错误的SQL注入预防:在存储过程中完成(LOGIN、SEARCH等,欧洲和亚洲:SQL Server 2014)
之后在后面的代码中添加
checkForSQLInjection
方法=>此方法检查输入字符串是否存在 SQL 注入。这里我必须列出字符串数组中的所有 SQL 注入输入。添加此方法返回 true 和 false。然后双击按钮并编写以下代码:=>这里我必须编写将数据插入数据库的代码,并检查输入数据是否存在 SQL 注入。
It is possible to SQL injection in Winforms. You may follow below as strategy
Provide user least possible privilege
Use
dbStoredProcedureOnlyAccessAmar
database role as shown belowAfter creation
Error-based SQL injection prevention: to be done in a stored procedure (LOGIN, SEARCH Etc., Europe & Asia: SQL Server 2014)
After that the add
checkForSQLInjection
method in the code behind=>this method check the Input string against the SQL injection. Here I have to list all SQL injection input in array of string. Adding this method returns true and false.Then double click on the Button and write this code:=>here I have to write the code for inserting the data in a database and also check the input data against the SQL injection.