2011-06-05 41 views
0

我正在为Intranet编码。从理论上讲,我不必过于担心SQL注入(我可以看到你已经在恐惧中抛出你的手;-)这不是一个真正安全的应用程序,它没有任何“秘密的东西”。我仍然对消毒字符串感到困惑

我更关心存储和检索包含引号的字符串。

它必须使用ODBC功能(从高位开始)。

1)addslashes()执行命令时是否就足够了?stripslashes()当检索它们时是否足够? 2)我知道哪些输入可能包含引号&哪些不是(例如,某些表单输入字段要求输入数字a被验证,所以,如果它们要写入d/b,它们是已知的以免引号)

但是,我确实有OdbcExec()odbc_fetch_row()的核心功能,然后提取命名列的值。

是否有任何理由为什么我应该点头添加/剥离斜杠?

如果你可以使它更安全一些,同时仍然使用OSBC功能,那么一定要这样做。我在开发早期阶段主要关心的是在输入包含引号的字符串时防止崩溃。 1或2个中心功能对我来说似乎最好,但也许你更好。

感谢您澄清

+0

al?? ------- – 2011-06-05 01:48:12

+1

始终担心任何最终连接到网络的系统中的安全代码。假设网络遭到破坏,那么可以从那里造成什么样的损害。如果您的应用程序易于注入到Intranet中,则所有perp需要执行的操作来控制该数据库获得可信访问权限。哪个不是*那*很难了:( – Brian 2011-06-05 01:57:49

回答

3

使用参数化查询/语句。在ODBC准备和执行功能,为您提供此功能,像这样:

<?php 
    $a = $_GET['a']; 
    $stmt = odbc_prepare($db_conn, "SELECT b FROM c WHERE a=?"); 
    $res = odbc_execute($stmt, array($a)); 
?> 

有一些限制与问候到开始和结束/ w的单引号的参数,在这里看到:

http://php.net/manual/en/function.odbc-execute.php

验证在将数据放入数据库之前尽可能以最佳方式输入数据,并使用参数化查询,然后开始工作。