我有一个脚本,我将一个新项目写入我的数据库。 在这个脚本中,我有一个textarea元素,名称=“omschrijving”。 在该textarea中,用户可以指定<李>我用css设计过的元素。
问题是,当我输入时:< li> hello< / li>成为:& lt; li> hello& lt; / 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);
}
有谁知道如何解决这个问题? 我知道这个脚本对黑客来说很有吸引力,因此没有必要指出这一点。
亲切的问候,
迈克尔
答案 0 :(得分:2)
确定。
只需在代码中找到对数据库数据htmlspecialchars/htmlentities
执行的地方并删除它。
我可以向您保证,数据库永远不会按照自己的意愿添加符号。
更改/添加到数据中的每个符号都是一些PHP代码的结果。
请注意,您的查询格式不正确
您必须通过单独格式化每个文字或使用预准备语句来格式化它
这与您的li>
问题无关,但它与您的应用程序错误和漏洞相关
答案 1 :(得分:0)
http://php.net/manual/en/function.htmlentities.php http://www.php.net/manual/en/function.htmlspecialchars.php
据我所知,MySQL不会像这样清理你的html,所以代码中的某些内容正在传递$_POST['omschrijving']
到htmlentities()
或htmlspecialchars()
。这些函数中的任何一个都会产生您在数据库中看到的输出。
编辑:
刚刚看到你的评论,这是你的WYSIWYG编辑器。好抓!