2015-06-14 62 views
1

我正在開發一個Web應用程序,用戶將提供將使用imagemagik呈現到圖像上的UTF8文本。我通過PHP的shell執行命令調用轉換命令。防止用戶注入,通過命令行運行imagemagik

我並不熟悉對用戶輸入(用於注入)進行命令行操作的消毒,並且一直無法找到有關我確切情況的資源。

下面的文章聽起來像我沒有什麼可擔心的,如果用戶輸入完全是用引號括起來在bash命令:

Sanitize user input in bash for security purposes

所以我的問題是,我需要什麼不用擔心用戶環衛/在以下使用轉義

<?php 

    //GET USER SUPPLIED POST DATA 
    $user_input = $_POST['text']; 

    //CALL IMAGEMAGIK VIA COMMAND LINE TO RENDER IMAGE 
    exec("convert -pointsize 50 -draw 'text 50,50 \"".$user_input."\" ' /source.png /output.png"); 

編輯:由於張貼我意識到我應該只運行ImageMagick的作爲在PHP的安裝庫......所以現在我想,同樣的問題,但使用php ob方法。

回答

0

您始終可以將用戶輸入放到文本文件中,然後使用@文件名前綴來讀取它。這樣它就不會成爲命令行。

$user_input = addslashes($user_input); 
file_put_contents("input.txt", "text 50,50 $user_input"); 
exec("convert -pointsize 50 -draw @input.txt /source.png /output.png");