2010-06-30 4 views
0

내 웹 콘텐츠를 관리하는 데 DB를. 당신이 certian 페이지를 명중 할 때, db에 조회는 그 페이지를위한 내용을 돌려 보내기 위하여한다. 대개 나는 정적 HTML을 문자열로 저장하고 db에서 반환되어 웹 페이지에 배치 될 때 올바르게 렌더링됩니다. 하지만 이제는 내용 중 일부가 실제로 php를 포함하고 반환 될 때 php가 텍스트로 표시됩니다. 나는 eval() 함수를 살펴 봤지만 나에게 효과가있는 것 같지 않거나 아마도 잘못 사용했을 것이다.데이터베이스에서 PHP를 반환하고 코드를 렌더링

은 여기 내 코드의 예 :

mysql_select_db("default_DB1", $con); 

       $result = mysql_query("SELECT * FROM submenus WHERE active = '1' and menu_id='" . $_GET['article'] . "'"); 

    echo "<ul>\n"; 
       $counter = 1; 
       while($row = mysql_fetch_array($result)) 
       { 
         echo "<li><a href=\"#tabs-" . $counter . "\" onclick=\"storySize('tabs-" . $counter . "');\">" . $row['submenu_name'] . "</a></li>\n"; 
         $counter = $counter + 1;      
       } 
       echo "</ul>\n"; 

       $counter = 1; 
       $result2 = mysql_query("SELECT * FROM submenus WHERE active = '1' AND menu_id='" . $_GET['article'] . "'"); 
       while($row2 = mysql_fetch_array($result2)) 
       { 
         echo "<div id=\"tabs-" . $counter . "\" style=\"height:100%; overflow:visible;\">" . str_replace("*#*","'",$row2['submenu_content']) . "</div>\n";      
         $counter = $counter + 1; 
       } 

       mysql_close($con); 

그런 다음 반환 된 내용은 다음과 같습니다

<table width="100%"> 
<tr> 
<td align="right">Username: </td> 
<td align="left"><input type="text" id="txtUsername" name="txtUsername" value=""></td> 
</tr> 
<tr> 
<td align="right">Password: </td> 
<td align="left"><input type="text" id="txtPassword" name="txtPassword" value=""></td> 
</tr> 
<tr> 
<td>User Type</td><td><select id="ddlUserType" name="ddlUserType"> 

$con = mysql_connect("domain.com","username","pwd"); 
if (!$con) 
    { 
    die(#*#Could not connect: #*# . mysql_error()); 
    } 

mysql_select_db("default_DB1", $con); 

$result = mysql_query("SELECT * FROM user_types WHERE user_type_name <> #*#Admin#*# and active = #*#1#*#"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<option value=\"" . $row[#*#user_type_id#*#] . "\">" . $row[#*#user_type_name#*#] . "</option>"; 
    } 

mysql_close($con); 

</select></td> 
</tr> 
<tr> 
<td align="right"></td> 
<td align="left"><input type="button" id="txtReg" name="txtReg" value="Register" onclick="alert(*#*plaka*#*);"></td> 
</tr> 
</table> 
+0

은' "WHERE ACTI 하위 SELECT * FROM ve = '1'및 menu_id = ''. $ _GET [ '기사']. "이런 식으로 코드를 작성하는 것은 매우 위험하고 위험하기 때문에 이것을 재검토해야합니다. – DrColossos

답변

2

첫째는, eval 봐. 내가 작동하지 않는 이유는 eval이 코드가 PHP 코드 (예 : <?php) 앞에 오는 것을 예상하기 때문입니다. 따라서 HTML을 PHP로 실행하려고합니다. 해결하기 위해 코드를 ?> 앞에두기 만하면됩니다. into eval() ...

두 번째로 SQL 인젝션 취약점은 데이터가 아니라 서버에 실제로 영향을 미치고 유지하기가 더 어렵 기 때문에 안전하지 않습니다.) 두 곳에서 살고있다. 나는 당신의 문제에 다른 해결책을 찾는 것이 좋습니다 높게 것

...

+1

나는 이것을 초. 아주 나쁜 생각이야. –

+0

차가움. 조언을 주셔서 감사합니다, 나는 그것을하는 또 다른 방법을 살펴 보겠습니다. –

관련 문제