相关疑难解决方法(0)

什么是ORM?我在哪里可以了解更多信息?

有人建议我为我正在设计的项目使用ORM,但是我无法找到有关它是什么或它是如何工作的信息.任何人都可以给我一个简短的解释或链接,我可以在哪里了解更多信息吗?

database language-agnostic orm

230
推荐指数
3
解决办法
18万
查看次数

我们应该始终绑定我们的SQL语句吗?

我一直在研究PDO bindValue().我知道用PDO准备我的SQL语句会阻止SQL注入的发生.

代码示例:

$stmt = $dbh->prepare('SELECT * FROM articles WHERE id = :id AND title = :title');
$stmt->bindValue(':id', PDO::PARAM_INT);
$stmt->bindValue(':title', PDO::PARAM_STR);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)

通过将ID绑定为数字,并且Title是一个字符串,我们可以限制当有人尝试在代码中执行SQL注入时所造成的损害.

我们是否应该始终将我们的值绑定在一起,PDO::PARAM_以便我们可以限制SQL注入中可以从数据库中提取的内容?这样做是否会增加PDO的安全性bindValue()

php sql pdo

14
推荐指数
2
解决办法
1335
查看次数

我的数据源不支持删除?我怎么能激活它?

我刚从Visual Studio 2005收到此消息,当我点击删除命令时,我使用界面配置网格添加到我的gridview:

除非指定了DeleteCommand,否则数据源'transactionsSqlDataSource'不支持删除.

我怎么能激活它?我希望我的用户在单击"删除"按钮时能够删除一行.

我已经将我的SQLDataSource的属性DeleteCommandType更改为StoredProcedure.我还需要做什么?

UPDATE

这就是我所做的,但我遗漏了一些东西,我无法编译:

这就是我在.cs所做的:

public string DeleteCommand { get; set; }
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题,它说得到的是身体缺失.我不习惯使用ASP.NET.你能帮我修一下这部分代码吗?

这就是我在.aspx所做的:

<asp:SqlDataSource ID="transactionsSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:membershipsDBConnectionString %>"
        SelectCommand="SELECT [brukerId], [kjoptekvoten], [pengeneutbetalt], [fyringsolje], [biltype], [kjoptid] FROM [Informasjon]" DeleteCommandType="StoredProcedure"
        DeleteCommand="DELETE FROM [Informasjon] WHERE fyringsolje='Kull: 2,42 kg';">
    </asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

数据源的配置是否正确?不要担心,如果你看到删除命令不使用上面的参数,它只是一个功课(我只需要通过查询).

更新2 我一直在尝试,但我无法解决它.我是ASP.NET的新手,我对所有术语都不是很熟悉.到底发生了什么?我如何知道我的商店程序的名称?:

CS:

public string DeleteCommand { get { return DeleteCommand; } set { DeleteCommand = "";} 
Run Code Online (Sandbox Code Playgroud)

ASPX:

<asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:membershipsDBConnectionString %>"
        DeleteCommandType="StoredProcedure" SelectCommand="SELECT [id], [kjoptekvoten], [pengeneutbetalt], [fyringsolje], [biltype], [kjoptid] FROM [Informasjon]"
        DeleteCommand="StoredProcedureName">
    </asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

当我单击Delete时,需要从表 …

.net c# asp.net visual-studio

2
推荐指数
1
解决办法
7454
查看次数

Oracle - 为什么在存储过程中允许EXECUTE IMMEDIATE?

如果存储过程旨在缓解SQL注入攻击,为什么在存储过程中允许EXECUTE IMMEDIATE?以下问题的接受答案是将它们作为抵御此类攻击的一步:

什么是存储过程? /sf/answers/32167201/

"存储过程还具有安全性,因为您可以向存储过程授予执行权限,但用户不需要对基础表具有读/写权限.这是针对SQL注入的良好的第一步."

...除非存储过程使用EXECUTE IMMEDIATE.

此PL/SQL代码返回产品的描述(第二个参数).

CREATE OR REPLACE PROCEDURE prodDescr(vname IN VARCHAR2, vresult OUT VARCHAR2) AS
vsql VARCHAR2(4000);
BEGIN
vsql := 'SELECT description FROM products WHERE name=''' || vname || '''';
EXECUTE IMMEDIATE vsql INTO vresult;
END;
Run Code Online (Sandbox Code Playgroud)

恶意用户输入.

A' AND 1=2 UNION SELECT password FROM members WHERE username='admin
Run Code Online (Sandbox Code Playgroud)

生成的查询.

SELECT description FROM products WHERE name='A' OR 1=2 UNION SELECT password FROM members WHERE username='admin'
Run Code Online (Sandbox Code Playgroud)

执行查询时,攻击者获取管理员密码.

正如您所看到的,虽然我们使用了存储过程,但是攻击者仍然可以像使用PHP中的某些SELECT语句连接而不是清理输入那样轻松地利用漏洞.对我来说,向开发人员说存储过程有助于保护数据库安全,这似乎是非常误导的.

sql security oracle stored-procedures sql-injection

1
推荐指数
1
解决办法
1170
查看次数

为什么需要使用存储过程?

我已经看到了它的特点。但找不到使用的原因

sql stored-procedures

-6
推荐指数
1
解决办法
3931
查看次数