【问题标题】:Lazarus Pascal or Delphi - Escaping characters for security/integrityLazarus Pascal 或 Delphi - 为安全/完整性转义字符
【发布时间】:2012-12-18 20:03:20
【问题描述】:

在 PHP(和 MySQL)中,我们有许多技术来确保输入的数据是有效和安全的。添加斜线、MySQL 的转义字符串和正则表达式是我们经常使用的几个。

我看到这个链接对这个主题做了一个非常初步的介绍,但它可能不完整或不是最新的。

我的问题:

  1. Lazarus/FPC 是否提供此类功能?

  2. Delphi 提供什么?至少一些线索或函数名称可能会给我一个想法,以便我可以为 Lazarus 构建它。

谢谢!

【问题讨论】:

  • 你要防范什么?
  • @DavidHeffernan 我正在尝试做两件事 - 有效地验证输入,并防止注入(在我的情况下是 PostgreSQL/MySQL)。

标签: regex delphi escaping lazarus


【解决方案1】:

在几乎任何框架中,防止不良数据的最可靠方法不是试图逃避它,而是始终使用准备好的语句。

Lazarus/FreePascal 也不例外 - 请参阅一些示例如何使用 prepared statements in FreePascal

【讨论】:

  • 感谢您提供最佳答案的快速响应;)
【解决方案2】:

这个问题似乎完全是关于注射的。您可以通过使用参数将所有用户数据传递到数据库来防御这种情况。当你这样做时,没有必要逃避任何事情。不要试图以任何其他方式解决这个问题。

【讨论】:

  • 数据库框架是指DBMS吗?如果是这样,我不太确定。在过去的 6 年里,我们总是不得不逃避或做一些额外的格式化来使用 MySQL。只是现在,其中一些默认提供了一些附加功能。在没有这些“附加功能”的情况下,我已经成功破解了我自己的数据库应用程序。
  • 不是 DBMS。上面的层。用户数据总是通过参数传递给数据库。也称为prepared statements。我确定你在 PHP 中使用过这些。而且您在 Delphi(和 PHP)中使用的数据库组件不需要您转义参数。
  • @DavidHaffernan Delphi/Lazarus 中的参数是指这样的意思:dbQuery.Params.ParamByName('pCode').AsString := pField;
  • 自 XE 以来,Delphi 内置了一个正则表达式类。至于 FPC 试试这里:wiki.freepascal.org/Regexpr
  • Jedi 代码库有一个 PCRE 库的包装器,它也应该在 FPC 2.4 中工作,并且最近为 FPC 2.6 发送了未经测试的补丁 PCRE 库有自己的 Delphi 包装器,不知道它是否也适用于 FPC或者您需要为 FPC 找到不同的 API
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多