2012-10-10 72 views
0

所以我一直在檢查我能想到的所有事情,以確保我的輸入字段對於任何類型的SQL注入都是安全的。好消息是他們是安全的。壞消息是有一個標籤在一個它不應該觸及的地方搞亂了表單提交,我不能爲了我的生活找出原因。「SQL注入」問題阻止正確的表單提交 - PHP

這是所使用的精確HTML(這是在一個模板文件,所以原諒{$variables}

<div width="100%"> 
{$content} 

{if $show_form != false} 
    <table class='Tfs_forum TFS_body ui-corner-all'> 
    <thead><tr><th class="TFS_header ui-corner-all">{$table_header}</th></tr></thead> 
    <tbody><tr><td class="TFS_userinfo loginlink ui-state-default ui-corner-all"> 
     BBCode enabled. HTML will be parsed.<br><center> 
     <button type="button" onclick="addtoreply('[p]','[/p]')">Paragraph</button> 
     <button type="button" onclick="addtoreply('[b]','[/b]')"><b>Bold</b></button> 
     <button type="button" onclick="addtoreply('[i]','[/i]')"><i>Italic</i></button> 
     <button type="button" onclick="addtoreply('[u]','[/u]')"><u>Underline</u></button> 
     <button type="button" onclick="addtoreply('[s]','[/s]')"><s>Strikethrough</s></button> 
     <button type="button" onclick="addtoreply('[size=20px]','[/size]')">Font Size</button> 
     <button type="button" onclick="addtoreply('[color=red]','[/color]')">Font Color</button> 
     <button type="button" onclick="addtoreply('[center]','[/center]')">Center Text</button> 
     <button type="button" onclick="addtoreply('[url=]','[/url]')">Link</button> 
     <button type="button" onclick="addtoreply('[img]','[/img]')">Image</button> 
     <button type="button" onclick="addtoreply('[list]','[/list]')">List</button> 
     <button type="button" onclick="addtoreply('[*]','')">List item</button> 
    </center></td></tr> 
    <form method="post" action="{$submit_url}"> 
    <tr><td> 
     <input type="hidden" name="forum" value="{$forum_id}"><div style="margin-left:10%;"><label>Topic title: <input type="text" name="new_post_title" value="{$title}"></label></div> 
    </td></tr> 
    <tr><td> 
     <label><div style="margin-left:10%; margin-right:10%;">Content:<textarea id="replybox" style="width: 100%; height: 150px;" name="new_post_content">{$formcontent}</textarea></label></div> 
    </td></tr> 
    <tr><td> 
     <div style="display: inline-block; float: right;"><button type="submit" name="new_post_submit"><span class="save"></span>Submit</button></div> 
    </td></tr></tbody> 
    </form></table> 
{/if}  

</div> 

好吧,這是得到執行,直到它看到沒有公佈數據的整個PHP腳本(無論壇的田地,在發佈):

<?php 
class TForumSystem_NewPost extends PHPDS_controller 
{ 

public function execute() 
{ 
    include("BBCode.class.php"); 
    include("includes.class.php"); 
    $this->template->addCSSToHead(Allincludes::css()); 
    $this->template->addJsToHead(Allincludes::js()); 



    //Main variables here 
    $db_category = "***"; 
    $db_forums = "****"; 
    $db_posts = "****"; 
    $db_replies= "****"; 
    // $db_posts, $db_category, $db_forums, $db_replies; 
    //$forum_view_url = $this->navigation->buildURL('forum-view'); 
    $view = $this->factory('views'); 
    $maincontent = ""; 
    $forum_link = ($this->navigation->buildURL('main-forum')); 
if(!isset($_POST['forum'])) { 
$this->template->info("Invalid forum, please navigate to the main <a href=\"$forum_link\">forum</a>"); 
$view->set('content', "Invalid forum, please navigate to the main <a href=\"$forum_link\">forum</a>"); $view->show(); 
} 

問題是,當我使用的東西,如' or 1='1或在標題字段' or 1=1--,沒有數據被公佈,我目前使用的print_r($ _ POST),看看什麼是bein克提交,並沒有什麼是。

它可以完美地用於任何其他語句,但我也應該提到,這個腳本在我的本地機器上完美地工作,但是當使用我的主機時,我遇到了上述問題。

這是所有的輸入列表我測試了一下搞砸了:

' or 1='1 
' or 1=1-- 
'" or 1=1-- 
' or 0=0 -- 
' or 'a'='a 
+5

實際的代碼會更有幫助,而不是描述它的作用。但是,請確保您僅發佈其中的一部分 - 您認爲導致問題的本質 – Nemoden

+0

發佈代碼 –

+1

我已編輯過您的帖子以進行代碼格式化和易讀性。儘管你的HTML並沒有太多的意義,所以我改變了它的邏輯。如果我所做的不對,請隨時再改變一次。 –

回答

0

嗯,我有點理解了它。在我在php變量中創建論壇之前,然後將其輸出到模板之前,我將該表單直接放入模板中,並且似乎已經奏效,感謝所有幫助!

編輯:沒關係,我們有新的證據。它在我的本地機器上工作正常,但它仍然不能在我的主機上工作..我sooo在這裏丟失..

+0

我可以想出的唯一可能的結論是它與htaccess重寫規則有關,但問題是它適用於除了這些小sql片段中的一些外 –

+0

確認它不是重寫..我輸了我的心在這裏 –