2013-08-28 42 views
0

阅读了几乎所有的帖子,但无法判断我的程序是否易受伤害?任何帮助表示赞赏。以下MySql存储过程是否容易受到sql注入?

1)调用过程为:

$query = ($is_mine?'call dispatch.dis_get_my_assigned_tasks("'.$username.'");' 

步骤:

CREATE DEFINER=`test`@`localhost` PROCEDURE `dis_get_all_assigned_tasks`() 
BEGIN  
    select distinct at_id, at_issues, at_location, at_room_number, user_fname, 
     from dispatch.dis_assigned_tasks 
     left outer join dispatch.dis_users 
     on user_id = at_user 
    order by at_location, at_user_pickup_timestamp desc; 
END 

2)调用方法如:

$query = "call dispatch.dis_get_user_info('".$username."');"; 

步骤:

CREATE DEFINER=`test`@`localhost` PROCEDURE `dis_get_user_info`(IN username VARCHAR(45)) 
BEGIN  
    select * from dispatch.dis_users where user_username = username; 
END 
+0

这是没有安全审查服务。如果您担心这些查询中存在特定问题,请告知我们您的想法是哪一个。 – hakre

+0

可能的重复[如何防止SQL注入PHP?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – hakre

+0

看起来像它测试与'看看它是不是.. –

回答

0

程序不容易被SQL注入,但是您的查询是。

为了防止(和了解)SQL注入,请参阅我们的参考问题:

对于“几乎所有的职位对这个”你说你读过看起来他们没有很好地涵盖这个话题。我建议你选择更好的教材。

+0

仍然该过程容易受到SQL注入的影响,假设您使用过程作为API层,以便客户可以调用该过程。在它自己的过程中应该有un SQL注入检查。 –

+0

@RaymondNijland:程序的参数是键入的(实际上有一个参数,第一个程序没有参数),所以没有注入。至少在本书中,该过程不容易受到SQL注入的攻击(就我所知,过程中没有不安全的动态SQL生成代码)。 – hakre

+0

不相信书籍,总是试试你的自我。有一个id为68903的mysql错误,它允许SQL注入(这个错误被oracle删除......)在一个过程上(https://www.google.nl/search?q=mysql+bug+68903)mysql仍然可能容易受到这个不知道我需要分析mysql的源代码来找出。 –

相关问题