问题标签 [input-sanitization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 如何清理 ODBC 数据库输入?
我目前使用 MySql,但更喜欢 ODBC 解决方案以使其成为未来的证明。
如何在将用户输入传递到 ODBC 数据库之前对其进行清理?
而且,当我这样做时,我将字符串用双引号括起来,例如 "INSERT INTO VALUES(description) ""` - 但是如果文本本身包含双引号怎么办?
magento - SQL转义/清理以编程方式设置的Magento项目属性值数据?
当我以编程方式将 Magento 项目属性设置为用户提供的数据时,我是否需要 SQL 转义/清理该数据或 Magento 是否会这样做?
-- 下面是一个代码示例:
java - 哪个例外在这里最合适?
我正在一种实用方法中验证来自 Restlet URL 的一些输入(这样,如果我采取的行为发生变化,我只会将其更改一个地方,是的)。legalName 本质上将值验证为 alphaNumeric,但我可能很快会允许使用其他字符。
我试图让我的异常有意义——在这种情况下,什么异常是最好的?
我的想法是:
- IllegalArgumentException - 键直接导致无效结果
- IllegalStateException - 我们正在尝试使用不合格的值
- 没有例外 - 返回一个空字符串并记录违规的事实
- 没有例外 - 删除任何不受欢迎的字符,返回经过清理的字符串,并记录事实
当然,我不是第一个必须验证输入的人:-)
php - 在 PHP 中验证和清理用户输入
是否被认为是使用 PHP 过滤和清理变量的最佳实践filter_var()
,sanitize_var()
还是有更好的选择?
谢谢你。
php - 确保信息后?是一个整数
我已经从 HTML 转向 PHP 编码,所以当我想为我的新闻页面创建链接时,我使用 HREF 将行的 id 作为链接,并将文章的标题设为可查看/可点击的链接:
因此,当有人单击标题时,它会重定向到文章,并且地址栏变为(显然这是一个示例): http ://site.com/news.php?id=1
如何验证之后的信息?是 id=int(它总是一个数字)而不是一些用户代码或其他可能损坏网站的输入?我已经研究过清理/验证代码的方法,但我发现的所有示例都与将信息输入表单有关,然后在地址中使用,而不是简单地确保地址有效,因此转向这里寻求帮助。谢谢
php - php - 使用 preg_replace_callback 和 ord() 清理用户输入?
我有一个论坛风格的文本框,我想清理用户输入以阻止潜在的 xss 和代码插入。我见过使用 htmlentities,但后来其他人说 &,#,%,: 字符也需要编码,而且我看起来越多,出现的潜在危险字符就越多。白名单是有问题的,因为除了 ^a-zA-z0-9 之外还有许多有效的文本选项。我想出了这个代码。它能阻止攻击并确保安全吗?有什么理由不使用它,还是有更好的方法?
编辑:_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ____ 我当然可能是错的,但我的理解是 htmlentities 仅替换 & < > " (如果 ENT_QUOTES 已打开,则为 ' )。这可能足以阻止大多数攻击(坦率地说,对于我的低流量站点来说可能绰绰有余)。然而,在我对细节的痴迷关注中,我进一步挖掘。我警告过一本书还要编码 # 和 % 以“关闭十六进制攻击”。我发现有两个网站警告不要允许:和 --。这一切都相当混乱对我来说,并引导我探索转换所有非字母数字字符。如果 htmlentities 已经这样做了,那就太好了,但似乎没有。这是我在 Firefox 中单击查看源代码后复制的代码的结果。
原始(要测试的随机字符): 5: gjla#''*&$!jl:4
preg_replace_callback: <b>5:</b>gjla<hi>#''*&$!jl:4
htmlentities(带 ENT_QUOTES):<b>5:</b>gjla<hi>#''*&$!jl:4
htmlentities 似乎没有对其他字符进行编码,例如:对不起文字墙。这只是我偏执吗?
编辑#2:_ __ _ __ _ __ _ _
php - 在 Adodb for PHP 中清理 SQL 查询的输入
我正在优化一个使用ADODBforPHP的平台。我使用了一个清理功能,可以避免以前版本的 PHP (mysql_escape_string) 的 sql 注入,这显然不再支持也不推荐。
对于那些没有使用过这个库的人,它是这样的:
更新某些行时的示例:
在这种情况下,q($string)是我正在尝试改进的清理功能。我无权在此服务器中安装 PDO,因此这不是一个选项。
当前的 q() 使用 mysql_real_escape_string 没有第二个参数:
有人在另一个论坛上推荐了filter_var ($value, FILTER_SANITIZE_STRING),但老实说,我没有将它用于这些问题。
有关如何提高此功能用途的安全性的任何建议?
更新 1
jquery - 清理 textarea 值:修剪所有行中的空白
我已经设置了粘贴事件来清理 textarea 值。它已经完成了我需要的一切,除了一件事:在所有行的开头和结尾修剪空白。有任何想法吗?
ps:我使用的是 ben alman 的doTimeout 插件,因为粘贴事件在文本可用之前被触发。
android - 清理数据库
当使用 php 和 mysql 在网络上使用数据库进行编码时,您必须在将数据插入数据库之前对其进行清理,以确保有人不会转义引号等。这在 Android 和 MySQLite 中是否有必要?会自动消毒吗?或者只是没有必要?
ruby - Rails 中输入的隐式清理:为什么这些来自 API 的示例以它们的方式工作?
感谢您的帮助,因为我引导我进入 Ruby 和 Rails。
在ActiveRecord::Base的 Rails API 中,有一个关于条件的部分,旨在简单地介绍与 ActiveRecord 交互的语法。但是他们使用的示例包括(对我而言)非常有趣的关于 Ruby/Rails 中输入清理的入门:
按照此示例代码,他们解释说:
“authenticate_safely 和 authenticate_safely_simply 都将在将用户名和密码插入查询之前对其进行清理,这将确保攻击者无法逃避查询并伪造登录(或更糟)。”
我完全明白这种输入净化是如何防止注入攻击的好事。鉴于没有调用特殊方法来预处理输入数据,我不明白这种隐式清理的位置和方式。各种示例方法似乎具有几乎相同的语义,但由于它们的解析方式,形式上的变化对安全性产生了巨大影响。我假设这些形式上的变化在效果上类似于在包含转义字符的字符串周围使用单引号和双引号之间的区别。但是,任何人都可以通过一般性的理解(或者更确切地说:在逻辑层面,而不是在解释器内部)来帮助我变得更聪明、更快吗?
此外,这些差异在多大程度上依赖于特定于 Rails 的构造,而不是底层的 Ruby?
谢谢!