SQL安全性-创建安全的SQL命令
我想知道如何最好地确保Oracle数据库的安全性。您可以使用SQL安全性-创建安全的SQL命令,sql,oracle,sql-injection,Sql,Oracle,Sql Injection,我想知道如何最好地确保Oracle数据库的安全性。您可以使用 SELECT TITLE, SUPERVISOR FROM PROJ_DETAILS WHERE STUDENT = DBMS_ASSERT.ENQUOTE_LITERAL(' The name entered and stored in username') 或 使用应用程序中使用的任何工具/技术的查询参数化功能与Oracle对话。。。你没有提到你在用什么产品?SQL只是一种查询语言,而不是特定数据库产品的名称。另外:您使用的是哪
SELECT TITLE, SUPERVISOR FROM PROJ_DETAILS WHERE STUDENT =
DBMS_ASSERT.ENQUOTE_LITERAL(' The name entered and stored in username')
或
使用应用程序中使用的任何工具/技术的查询参数化功能与Oracle对话。。。你没有提到你在用什么产品?SQL只是一种查询语言,而不是特定数据库产品的名称。另外:您使用的是哪种编程语言?DBMS是Oracle。这是散文。在这个主题上,应用程序的编程语言是什么?如果我是你,我可能会在一个包中创建一个存储过程,该包将学生id作为in参数,并返回一个ref游标作为out参数。然后您的查询将沿着select。。。从项目详细信息中,其中student=in\u student\u id;,这意味着它将使用绑定变量,因此不会受到SQL注入的影响。然后,应用程序只需调用过程并处理结果ref游标。如果您绝对必须避免存储过程,请确保将变量绑定到sql查询中,而不是进行字符串连接。这很有意义。如果我没有执行您的任何建议,而是如果用户密码也存储在数据库中,并且用户在WHERE子句中输入了一个密码以及一个带有为测试这两种密码而构建的查询字符串的用户名,那么SQL注入攻击会被阻止吗?@BitLord从不在数据库中存储密码。而是存储密码散列。如果可能,使用预构建的解决方案。如果您必须自己做,请选择一个好的哈希算法,而不是MD5、salt,并重复多次。
EXECUTE IMMEDIATE 'SELECT TITLE, SUPERVISOR FROM PROJ_DETAILS WHERE STUDENT =
:1 ' USING vstudent;