0

我有一个脚本,我在其中将一个新项目写入我的数据库。在这个脚本中,我有一个 name="omschrijving" 的 textarea 元素。在这个文本区域中,用户可以指定我用 css 设置样式的 <li> 元素。

问题是,当我输入: <li>hello</li> 在我的数据库中变成: & lt;li>hello< ;/li> 。

我使用 mediumtext 类型的列来存储 textarea 的值。

我的表格代码:

<form action="nieuwproject.php?action=toevoegen" method="post">

                            <fieldset class=""> <!-- Set class to "column-left" or "column-right" on fieldsets to divide the form into columns -->



                                <p>
                                    <label>Naam</label>
                                    <input class="text-input medium-input datepicker" type="text" id="medium-input" name="naam" />
                                </p>

                                <p>
                                    <label>Categorie</label>
                                    <select name="categorie" class="text-input medium-input">
                                       <?php $oObj->getCategorieDropdown(); ?> 
                                    </select>
                                </p>

                                <p>
                                    <label>Opdrachtgever</label>
                                    <input class="text-input medium-input datepicker" type="text" id="medium-input" name="opdrachtgever" />
                                </p>

                                <p>
                                    <label>Omschrijving</label>
                                    <textarea class="text-input textarea wysiwyg" id="textarea" name="omschrijving" cols="79" rows="15"></textarea>
                                </p>

                                <p>
                                    <label>Werkzaamheden</label>
                                    <textarea class="text-input textarea wysiwyg" id="textarea" name="werkzaamheden" cols="79" rows="15"></textarea>
                                </p>

                                <p>
                                    <input class="button" type="submit" value="Submit" />
                                </p>

                            </fieldset>

                            <div class="clear"></div><!-- End .clear -->

                        </form>

我的插入脚本的代码:

function addProject() {
    $this->sQuery = "INSERT INTO projecten (naam,opdrachtgever,omschrijving,werkzaamheden,categorie) 
        VALUES ('" . $_POST['naam'] . "','" . $_POST['opdrachtgever'] . "','" . $_POST['omschrijving'] . "','" . $_POST['werkzaamheden'] . "','" . $_POST['categorie'] . "')";
    $this->rResult = mysql_query($this->sQuery);
}

有谁知道如何解决这一问题?我知道这个脚本对黑客来说是糖果,所以没有必要指出这一点。

亲切的问候,

迈克尔

4

2 回答 2

2

当然。
只需在代码中找到htmlspecialchars/htmlentities用于数据库的数据的位置并将其删除即可。

我可以向您保证,数据库永远不会根据自己的意愿添加任何符号。
更改/添加到数据中的每个符号都是一些 PHP 代码的结果。

请注意,您的查询格式不正确。
您必须通过单独格式化每个文字或使用准备好的语句来格式化它。
它与您的li&gt问题无关,但与您的应用程序错误和漏洞有关

于 2013-02-22T14:34:25.423 回答
0

http://php.net/manual/en/function.htmlentities.php http://www.php.net/manual/en/function.htmlspecialchars.php

据我所知,MySQL 不会像这样清理您的 html,因此您的代码中的某些内容正在通过您$_POST['omschrijving']htmlentities()or htmlspecialchars()。这些函数中的任何一个都会产生您在数据库中看到的输出。

编辑:

刚刚看到您的评论,它是您的所见即所得编辑器。接得好!

于 2013-02-22T14:40:23.723 回答