如果<script>在字符串中,表格中的数据将不会显示。停止执行

时间:2017-02-15 05:23:45

标签: php mysqli php-7

所以我使用表单将数据输入到我的表中,然后使用

&#xA;&#xA;
  $ username = mysqli_real_escape_string($ con,$ _POST ['username']) ;&#xA;  
&#xA;&#xA;

mysqli_real_escape_string解决SQL注入问题。如果有人试图将脚本用作输入&lt; script&gt;,则使用此方法将导致数据保存为这样。一些坏脚本&lt; / script&gt; &#xA;肯定注入不会发生,但我注意到在尝试从表中检索数据时,一旦达到保存的用户名,执行就会停止像那样。我尝试编辑表并删除&lt; script&gt; &lt; / script&gt; 部分并刷新页面,正如预期的那样,执行没有停止并正确完成。我使用以下代码从表中检索数据

&#xA;&#xA;
  require_once('dbconnect.php');&#xA;&#xA; $ title = “应用程序”;&#xA;&#xA;&#xA; $ qry =“SELECT * FROM BUSINESS”;&#xA; $ result = mysqli_query($ con,$ qry);&#xA; $ info = array();&#xA;&#xA; while($ row_info = mysqli_fetch_assoc($ result))&#xA; {$ info = $ row_info;&#xA; echo“ID:”。 $ row_info ['buss_id']。 “&LT峰; br&gt;” 中。 “用户名:”。 $ row_info ['username']。 “&LT峰; br&gt;” 中;&#XA; }&#xA;  
&#xA;&#xA;

注意:dbconnect.php有$ con变量。谢谢。&#xA;我还想问一下代码中的部分

&#xA;&#xA;
  $ info = $ row_info;&#xA;  
&#xA;&#xA;

我正在按照教程进行操作,但是通过使用$ row_info变量,我可以得到相同的结果。任何澄清将不胜感激。感谢

&#XA;

2 个答案:

答案 0 :(得分:1)

如果我没有弄错,你就是在谈论从表单输入中删除javascripts(例如尝试将恶意javascript保存到你的论坛/留言板,以便你将它们显示给所有其他访问者)。

mysqli_real_escape_stringprepared statements只能对SQL injections起作用,(即试图欺骗程序运行不应运行的SQL语句)。因为你应该在表单输入中使用它们。但是它们的安全性与你提出的问题不同。

在保存到数据库之前,或者在向任何人显示之前,您需要对文本输入执行HTML sanitation。你应该

  1. 在字符串上使用strip_tags;或
  2. 使用filter_var与适当的Sanitize Filter;或
  3. 如果您不希望为用户输入提供HTML,可以使用htmlspecialchar将其转换为HTML保存纯文本。

答案 1 :(得分:0)

插入数据库之前

$text =  addslashes(htmlspecialchars($text));

输出

$text = stripslashes(trim(implode('',explode('\\',$text))));

echo $text;

这应该可以正常使用