sanitization 相关问题

数据清理以防止代码注入

将字符串转换为仅包含单连字符分隔符的 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

递归遍历多维数组时删除指定键的所有元素

比如说,我有一个具有以下结构的数组: 大批 ( [0] => 数组 ( [0] => 数据 [1] => 数据 [2] => 数据 [3] => 数组 ...

回答 2 投票 0

清理消息在 JSP 页面中不起作用

我有 <%@taglib prefix="e" uri="https://www.owasp.org/index.php/OWASP_Java_Encoder_Project" %> 也只是为了测试 <%@ taglib prefix="c" uri="http://

回答 1 投票 0

扩展类并返回对象,其方法与父类相同,但构造函数不同

我正在尝试从外部库扩展一个类,该类包含在开始任何操作之前在输入中使用其构造函数的方法,因为它可以有多种类型。我想创建一个...

回答 1 投票 0

从表单输入中清理 HTML 不起作用(symfony6.3 php 8.2)

尝试实现一个根据以下内容清理 html 输入的表单 https://symfony.com/doc/current/html_sanitizer.html#sanitizing-html-from-form-input 但我无法让它正常工作。 这是我的...

回答 1 投票 0

JavaScript,这可以启用反射跨站脚本(XSS)攻击

我有这个代码: const 实现 = async (req, res, next) => { const rut = req.user && req.user.nickname.toUpperCase(); const 数据 = req.body; // 错误 !!! if (!rut || !数据...

回答 1 投票 0

有没有更好的方法来使用 javascript 清理输入?

我想编写一个 JavaScript 函数来清理用户输入并删除任何不需要的和危险的字符。 它必须仅允许以下字符: 字母数字字符(不区分大小写...

回答 1 投票 0

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