sanitization 相关问题

数据清理以防止代码注入

在字符第二次出现时截断字符串

我想获取字符串中第二个正斜杠之前的部分。假设我有一个名为 $hello 的字符串变量,它是: $hello =“嘿/伙伴/来自/外部/什么都没有/是/要/是/完成&

回答 3 投票 0

在字符第二次出现时截断字符串

我想获取字符串中第二个正斜杠之前的部分。好吧,为了简单起见,我可以说我有一个名为 hello 的字符串,它是: $hello =“嘿/伙伴/来自/外部/什么都没有/是/到/是/...

回答 2 投票 0

如何限制用户运行更改数据的查询

我有一个基于 Java 的大型应用程序,它使用连接池来访问底层数据库以进行各种 CURD 和报告操作。该应用程序还提供数据库查询

回答 1 投票 0

在实现像SO这样的标签系统时进行清理/编码时

在我的开发中,我有一个与SO 非常匹配的标签系统。并且它还允许非拉丁字符。 用户可以输入新标签并将其保存到数据库中。 现有标签显示给...

回答 1 投票 0

Chronoforms 6 个数据掩码选项

Chronoforms6 上有一个选项可以为文本字段提供数据屏蔽。 我在条目参数中使用了以下条目: data-inputmask='掩码' : '*{1,30}' 我还需要的是留出空间...

回答 2 投票 0

如果某些属性包含这些值,如何在 Spring Boot 中清理请求正文

如果作为值存在,是否有任何库可以对这些进行编码,例如。可以是 html 属性、js 事件、脚本、评估为 true 的表达式吗?尽管它应该转义诸如“>50000&

回答 1 投票 0

将字符串转换为仅包含单连字符分隔符的 slug

我想清理 URL 中的字符串,所以这就是我基本上需要的: 除字母数字字符、空格和破折号外,所有内容都必须删除。 空格应该转换成da...

回答 10 投票 0

常量 FILTER_SANITIZE_STRING 已弃用

我已经安装了 PHP 8.1,并开始测试我的旧项目。我已经使用过滤器 FILTER_SANITIZE_STRING 像这样: $用户名 = filter_input(INPUT_POST, '用户名', FILTER_SANITIZE_STRING); 现在...

回答 6 投票 0

如何将字符串转换为安全的 SQL 字符串?

我正在从一堆文本文件生成一些sql插入语句。 这些文本文件通常是用户输入数据。我想清理这些数据,这样就不会破坏插入

回答 3 投票 0

如果使用准备好的 PHP/MySQL 查询,我需要清理输入吗?

鉴于以下代码,我需要逃逸并清理 $city 吗? 鉴于以下代码,我需要转义并清理$city吗? <?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $city = "Amersfoort"; /* create a prepared statement */ if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) { /* bind parameters for markers */ $stmt->bind_param("s", $city); /* execute query */ $stmt->execute(); /* bind result variables */ $stmt->bind_result($district); /* fetch value */ $stmt->fetch(); printf("%s is in district %s\n", $city, $district); /* close statement */ $stmt->close(); } /* close connection */ $mysqli->close(); ?> 使用准备好的查询时是否需要清理任何输入? 不,您不必为了注射保护而逃脱它或对其进行消毒。对于其他应用程序特定的内容,您可以对其进行清理。 不久前我也有过类似的问题: mysqli_stmt_bind_param SQL注入 您直接从 php.net 上有关 mysqli::prepare 的手册复制了该代码片段。在同一页上有以下文字: 准备好的语句的目的是不在 SQL 语句中包含数据。将它们包含在 SQL 语句中是不安全的。始终使用准备好的语句。它们使用起来更干净(代码更容易阅读)并且不易受到 SQL 注入。 这就是你问题的答案;) 此外。另外。 准备好的语句如果使用得当,几乎可以完全缓解 SQL 注入问题。但是您应该在适当的情况下格式化/清理输入数据。清洁输入不是一项安全功能,但为了稳健性和可用性,建议这样做。对于您的 $city,您可能需要删除所有非单词字符: $city = trim(preg_replace("/[^\w-]+/", " ", $city)); 再次强调:不会取代数据库转义或准备好的语句,但确保使用一致的数据。 我意识到这个问题很老了。我自己在搜索相同信息时偶然发现了它。我会对桑德的回答发表评论,但我还没有足够的声誉来发表评论。 Sander 说你不需要消毒,但是在 http://www.w3schools.com/php/php_mysql_prepared_statements.asp (我意识到 w3schools 并不总是一个完全最新且准确的信息来源,但我发现它以一种明智、易于理解的方式阐明了事情),他们说“注意:如果我们想插入来自外部来源的任何数据(例如用户输入),那么对数据进行清理和验证非常重要。 ” 所以看来当使用表单并接受用户输入时,你应该进行清理。

回答 4 投票 0

post 请求中的(无效)json 字符串中存在奇怪字符(编码问题)

我正在尝试使用以下行从发布请求中获取数据: $data = file_get_contents('php://input'); 问题是当我尝试执行 json_decode($data) 时,我得到 null。通过 var_dump() ...

回答 2 投票 0

php正则表达式过滤掉垃圾

所以我有一个有趣的问题:我有一个字符串,并且大多数情况下我知道会发生什么: http://www.someurl.com/st=????????? 除了这种情况外,“?”要么是大写字母,要么是数字......

回答 4 投票 0

删除不需要的多字节字符而不损害“外来”字符

删除不需要的 unicode 字符而不破坏其他外来字符的最佳方法是什么? ็็็็็็็็็็็็็็็็็็็็็็็็็็็

回答 1 投票 0

PHP 修复损坏的字符,如示例中所示

过滤这样的字符的最佳方法是什么: ็็็็็็็็็็็็็็็็็็็็็็็็็็็ 不破坏其他外文字符就出来了? 谢谢。

回答 1 投票 0

如果未提交输入元素,是否需要对其进行清理?

作为一个超级简单的例子,如果你有这样的东西可以快速给出当前输入的 50%: 其中 50% 是:&l...

回答 1 投票 0

jsoup.clean 将单引号替换为双引号。我怎样才能防止这种情况发生?

对于我们的应用程序,我们允许用户输入 HTML,稍后会向其他用户显示。 出于安全原因,我们清理此 HTML 并且不允许用户保存 HTML,这可能不是......

回答 1 投票 0

如何在保持所有非拉丁字母支持的同时清理字符串

通常,我会使用以下内容删除所有非英语字符: $file = filter_var($file, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH ); 然而,我是

回答 1 投票 0

通过删除两个已知子字符串来清理格式化的电话号码字符串

我在数组 $phone 中保存了一个值,想要删除“Tel.”和“-”。 $phone 的原始值是“电话+47 - 87654321”,我希望它是“+4787654321”。 到目前为止我已经编写了这段代码: $p...

回答 4 投票 0

使清理函数遍历潜在的嵌套数组

我在 PHP 表单处理程序中有以下代码块: 函数过滤器($数据){ $data=trim(htmlentities(strip_tags($data))); 如果(get_magic_quotes_gpc()){ $data = 条斜杠...

回答 7 投票 0

从所有 HTML 标签中删除所有不在白名单中的属性

所以,到目前为止我只能保留一个属性,但我试图将 class 和 id 属性保留在 HTML 标签中 代码: $string = '一些 所以,到目前为止我只能保留一个属性,但我试图将 class 和 id 属性保留在 HTML 标签中 代码: $string = '<div id="one-id" class="someClassName">Some text <a href="#" title="Words" id="linkId" class="classLink">link</a> with only the class and id attrtibutes./div>'; preg_replace("/<([a-z][a-z0-9]*)(?:[^>]*(\sclass=['\"][^'\"]*['\"]))?[^>]*?(\/?)>/i", '<$1$2$3>', $string); 输出: <div class="someClassName">Some text <a class="classLink">link</a> with only the class and id attrtibutes./div> 我试图从每个标签中删除除 class 和 id 属性之外的所有其他属性。 迭代 dom 中的所有节点,然后反向循环所有属性,以便您可以安全地修剪不在白名单中的属性。 (我修复了示例输入中 </div> 中的拼写错误。) 代码:(演示) $html = '<div id="one-id" class="someClassName">Some text <a href="#" title="Words" id="linkId" class="classLink">link</a> with only the class and id attrtibutes.</div>'; $dom = new DOMDocument(); $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xpath = new DOMXPath($dom); foreach ($xpath->query('//*') as $node) { for ($i = $node->attributes->length - 1; $i >= 0; --$i) { $attr = $node->attributes->item($i); if (!in_array($attr->name, ['id', 'class'])) { $node->removeAttribute($attr->name); } } } echo $dom->saveHTML(); 输出: <div id="one-id" class="someClassName">Some text <a id="linkId" class="classLink">link</a> with only the class and id attrtibutes.</div> ...实际上,XPath 并不是真正需要的,因为我们正在迭代 dom 中的每个节点。 (演示) $dom = new DOMDocument(); $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); foreach ($dom->getElementsByTagName('*') as $node) { for ($i = $node->attributes->length - 1; $i >= 0; --$i) { $attr = $node->attributes->item($i); if (!in_array($attr->name, ['id', 'class'])) { $node->removeAttribute($attr->name); } } } echo $dom->saveHTML();

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.