当前位置: 首页 > 面试题库 >

在插入MySQL之前使用htmlspecialchars()很好吗?

司凡
2023-03-14
问题内容

我对此有些困惑。我一直在阅读有关内容,htmlspecialchars()并计划将其用于文本区域POST以防止XSS攻击。我了解通常htmlspecialchars()用于生成发送到浏览器的HTML输出。但是我不确定的是:

1)htmlspecialchars()在将数据插入MySQL之前,先对用户输入的数据进行使用是一种安全的做法吗?我已经在使用带有参数化值的PDO准备好的语句来防止SQL注入。

2)或者,我真的不需要担心要使用htmlspecialchars()插入值(只要已对它们进行了参数化)而仅htmlspecialchars()在我从MySQL获取结果并将其显示给用户时使用?


问题答案:

正如其他人指出的那样,#2是正确的答案。将其保留为“原始”,直到需要它为止,然后适当地逃避。

为了详细说明原因(我将重复/总结其他文章),让我们将场景1推至逻辑极限。

当有人输入“ ' OR 1=1 <other SQL injection> --”时会发生什么。现在也许您决定因为使用SQL而应该为SQL编码(也许因为没有使用参数化语句)。因此,现在您必须混合(或决定)SQL和HTML编码。

突然,您的老板决定他也想要XML输出。现在,要保持模式一致,您还需要对此进行编码。

下一个CSV-哦,不!如果文本中有引号和逗号怎么办?更多转义!

嘿-一个好的交互式AJAX界面怎么样?现在您可能想开始将JSON发送回浏览器,因此现在{,[等。都需要考虑在内。帮助!!

显然,按给定存储数据(当然要受域约束),并 在需要时 根据您的输出进行适当的编码。 您的输出与数据不同。

我希望这个答案不要太光顾。归功于其他受访者。



 类似资料:
  • 是否可以更改此触发器,以便表获得插入的2个列值(,)? 如何找到的值? 如果它是已知的并且可以插入表,那么它是否也可以插入表? 创建表排序顺序: 创建表图像: 错误消息: 错误1054:“new”SQL语句中的列“sortOrder”未知: 在INSERT ON image之前为每一行开始INSERT to nextcart.sortOrder设置sortOrderId=NULL,sortOrde

  • 问题内容: 用户表: user_records表: 在用户表上的插入前触发器: 基本上,这里的问题是,当我尝试输入由MySQL自动分配的用户的ID(PK,NN,自动递增)时,在触发器上,它只是将user_records表中的userid放入0。我该怎么做,以便它将选择SQL分配给用户的ID,并将其作为用户ID放入记录条目中(该ID在“创建”之后)? 另外,如果您看到可以在表格上进行其他优化,请随时

  • 问题内容: 我有这句话: 我正在尝试插入值,复制item_costprice的相同数据,但显示错误: 我该如何解决? 问题答案: 在语句中使用带别名的数字文字。组件周围不需要。 请注意,在的上下文中,别名实际上不是必需的,您可以使用,但是通常情况下,您将需要别名来访问返回的列。

  • 问题内容: 这个问题已经在这里有了答案 : 为什么SELECT *被认为有害? (15个答案) 7年前关闭。 我知道一般来说,构建mysql查询来命名您需要的每个项目总是更好的性能,但是例如在配置文件页面上,我可能需要除几个项目之外的所有项目。 因此,如果不进行大量测试,也许有更多经验的人可以提出一些建议? 这会更糟吗 我更喜欢列出所有项目,因为如果我需要数据库中的东西,那么在该页面上可以轻松查看

  • 问题内容: 我正在掌握PDO的基础知识。 但是我试图获取插入的行的ID,我使用: 我遇到的教程都是关于交易的,但是我没有使用交易! 问题答案: 您可能正在寻找lastInsertId。“返回最后插入的行或序列值的ID”。