2013-08-28 37 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的源代碼來找出。 –

相關問題