Questions tagged «sanitization»

13
什么是最好的PHP输入清理功能?
我正在尝试提出一个函数,该函数可以传递所有字符串以进行清理。这样,从其中出来的字符串就可以安全地插入数据库了。但是有很多过滤功能,我不确定应该使用/需要哪些功能。 请帮助我填写空白: function filterThis($string) { $string = mysql_real_escape_string($string); $string = htmlentities($string); etc... return $string; }
161 php  filter  sanitization 

18
我可以通过转义单引号和用单引号引起来的用户输入来防止SQL注入吗?
我意识到,在构建包含用户输入的查询时,参数化SQL查询是清理用户输入的最佳方式,但是我想知道使用用户输入并转义任何单引号并将整个字符串都用单引号引起的问题是什么。这是代码: sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'" 用户输入的任何单引号都将替换为双单引号,这消除了用户结束字符串的能力,因此他们可能键入的其他任何内容(例如分号,百分号等)都将成为字符串的一部分,并且实际上并未作为命令的一部分执行。 我们使用的是Microsoft SQL Server 2000,我认为单引号是唯一的字符串定界符,也是逃避字符串定界符的唯一方法,因此无法执行用户键入的任何内容。 我没有发现针对此问题发起SQL注入攻击的任何方法,但我意识到,如果这在我看来像防弹一样,那么其他人可能已经想到了,并且这将是普遍的做法。 此代码有什么问题?有没有办法使SQL注入攻击超越这种清理技术?利用此技术的样本用户输入将非常有帮助。 更新: 我仍然不知道有什么方法可以有效地对此代码发起SQL注入攻击。一些人建议反斜杠可以转义一个单引号,而让另一个反引号结束该字符串,以便该字符串的其余部分将作为SQL命令的一部分执行,并且我意识到该方法可以将SQL注入到一个MySQL数据库,但是在SQL Server 2000中,唯一能够逃脱单引号的方法是使用另一个单引号。反斜杠不会这样做。 并且,除非有一种方法可以停止转义单引号,否则将不会执行其余的用户输入,因为所有这些都将被视为一个连续的字符串。 我知道有更好的方法可以清除输入,但是我真的更感兴趣于了解为什么我上面提供的方法行不通。如果有人知道针对此清理方法进行SQL注入攻击的任何特定方式,我很乐意看到它。

23
清理字符串以使它们的URL和文件名安全?
我正在尝试提出一个功能,该功能可以很好地清理某些字符串,以使它们可以安全地在URL中使用(如post slug),也可以安全地用作文件名。例如,当有人上传文件时,我要确保我从名称中删除所有危险字符。 到目前为止,我已经提出了以下功能,希望该功能可以解决此问题,并允许外来UTF-8数据。 /** * Convert a string to the file/URL safe "slug" form * * @param string $string the string to clean * @param bool $is_filename TRUE will allow additional filename characters * @return string */ function sanitize($string = '', $is_filename = FALSE) { // Replace all weird characters …

17
文件名的字符串清理器
我正在寻找一个将清理字符串并准备用于文件名的php函数。有人知道吗? (我会写一个,但是我担心自己会忽略一个字符!) 编辑:用于将文件保存在Windows NTFS文件系统上。
113 php  string  sanitization 

7
没有其他HTML的angularjs换行过滤器
我正在尝试将换行符(\n)转换为html br。 根据Google网上论坛的讨论,这是我得到的: myApp.filter('newlines', function () { return function(text) { return text.replace(/\n/g, '<br/>'); } }); 那里的讨论还建议在视图中使用以下内容: {{ dataFromModel | newline | html }} 这似乎正在使用旧的html过滤器,而现在我们应该使用ng-bind-html属性。 无论如何,这带来了一个问题:我不希望原始字符串(dataFromModel)中的任何HTML都呈现为HTML;只有br的。 例如,给定以下字符串: 虽然7> 5,但 我仍然不想要html和其他东西在这里... 我希望它输出: While 7 > 5<br>I still don't want html & stuff in here... 有什么办法可以做到这一点?

6
如何通过SQL Server中的SQL注入来克服单引号引起的卫生问题?
首先,我很清楚参数化查询是最好的选择,但是我在问什么使下面介绍的策略易受攻击。人们坚持认为以下解决方案无效,因此我在寻找一个示例说明为何不可行。 如果动态SQL在发送到SQL Server之前使用以下转义代码内置在代码中,则哪种注入方式可以克服这种情况? string userInput= "N'" + userInput.Replace("'", "''") + "'" 这里回答了类似的问题,但我认为任何答案都不适用于这里。 在SQL Server中,不能用“ \”转义单引号。 我相信使用Unicode的SQL走私(在此处概述)会因生成的字符串被单引号前面的N标记为Unicode而受到阻碍。据我所知,SQL Server不会自动将其他字符集转换为单引号。没有单引号的转义,我认为注入是不可能的。 我也不认为String Truncation是可行的方法。根据Microsoft的说法, SQL Server肯定不会进行截断,因为一个的最大大小为nvarchar2GB 。2 GB的字符串在大多数情况下是不可行的,在我的情况下是不可能的。 二阶注入是可能的,但在下列情况下是可能的: 使用上述方法对进入数据库的所有数据进行清理 数据库中的值永远不会附加到动态SQL中(为什么只要可以在任何动态SQL字符串的静态部分中引用表值,您仍然会这样做吗?)。 我并不是说这比使用参数化查询更好或替代,但是我想知道我概述的内容是多么容易受到攻击。有任何想法吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.