我是PHP新手。我被建议清理$_GET和$_POST。我一直在听从这个建议。但是,如果我只想用检查变量if(isset($_GET['login']))我需要对其进行任何sanitizer吗?此外,我是否需要清理我使用的$_SESSION值? 最佳答案 不,您不必进行任何类型的sanitizer或任何操作:isset()将允许您检查变量(或项目数组,在您的情况下)是否存在——仅此而已。在这里,当您测试项目/变量是否存在时,您无法对其进行清理:要清理数据,您需要它存在。但是请注意:如果该项目存在,isset()将返回false,但它是
我正在学习如何清理我的表单,并且知道使用PHP函数mysql_real_escape_string()有助于转义被视为“危险”或会破坏SQL语法的字符。我正在测试它并注意到它不会转义字符序列,例如--或/**/。这些注释不是SQL中的,它们不能破坏语句的语法吗?您将如何处理mysql_real_escape_string()未涵盖的这些和其他项目并真正净化您的表单? 最佳答案 它们永远不会破坏SQL语句,因为它们永远不会破坏字符串,因此您的字符串保持完整,保护您免受任何讨厌的注入(inject)。但这并不意味着您不想将它们从字符串中
这是我现在拥有的。$date=mysqli_real_escape_string($dbc,trim(date('Y-m-d',strtotime($_POST['date']))));有人告诉我,在将$date传递给strtotime()之前,我需要确保它是安全/合法的。我怎么做?我查过http://us3.php.net/strtotime但它真的没有告诉我我在寻找什么。有人可以更详细地向我解释如何清理提交到strtotime吗? 最佳答案 没有真正的理由事先清理值。可能发生的最糟糕的事情是时间无效并且strtotime()返回
假设我们有一个网站要求用户提供他的姓名。网站然后将此值存储在cookie中,并在下一页上通过PHP检索它并以某种方式使用它(也许页面将名称显示为文本)。用户是否可以修改cookie数据以注入(inject)恶意代码?cookie数据在被脚本检索时是否应该清理?(这是一个假设的场景。显然这里不需要cookie。) 最佳答案 Couldausermodifythecookiedatatoinjectmaliciouscode?Shouldcookiesbesanitizedasthey'reretrievedbythescript?注入
我是一名初学者PHP开发人员,正在处理有关PHP脚本注入(inject)的问题。幸运的是,PHP具有像filter_var和strip_tags这样的函数,它们非常适合我。但我不明白Sanitize和Validate这两个术语之间的区别请解释一下区别,谢谢 最佳答案 验证是确保输入符合您的业务规则。如果不是,则拒绝输入。您可能希望用户为您提供一个数字,但如果您收到的不是数字,那就是验证错误。而清理意味着确保输入的格式不会破坏其容器。这可能是一个分号(;)被用户错误地添加到输入中,所以当它被发送给你时,你为他删除/转义了它。在处理基于
首先我要提醒你我已经阅读了thispost和其他一些关于我的问题的帖子,但大多数都差不多是旧的,而且是大约3年前的。现在我正在使用CodeIgniter3,我想知道什么是我在插入数据库之前从用户那里检索的数据的最佳清理过滤器。这是为了我的网站注册,我不知道注册的是哪种用户,我不能相信他们。这可能很危险我想在将所有输入插入数据库之前对其进行清理我不知道input类足以清理它?请告诉我codeignitersanitizer功能!我已经阅读了codeigniter文档中的安全类,但我想确定一下。 最佳答案 根据Docs,input类,执
我到处都看到了不同的评论,有人说zend框架会自动清理发布/获取数据,但其他人则说不会。这是怎么回事?我已经看到在getParams上使用foreach进行预调度是最快的方法,但是有人有什么建议吗? 最佳答案 可能是关于Zend_Controller_Request与Zend_Db的交易。请求数据通常放入DB。请求对象不转义任何东西。您可以强制它使用过滤器、表单过滤器或例如使用此处描述的反射技术:Actions,nowwithparameters!Zend_Db查询基本上像在其他ORM中一样被转义,如PDO.
出于经验哪个更好用filter_input(INPUT_GET,‘my_string’,FILTER_SANITIZE_STRING);或者用于清理用户输入数据的正则表达式preg_match? 最佳答案 我更喜欢filter_input而不是正则表达式-因为它更容易阅读。 关于php-filter_input(INPUT_GET,‘my_string’,FILTER_SANITIZE_STRING);VS正则表达式预匹配PHP,我们在StackOverflow上找到一个类似的问题:
有没有一种方法可以在不使用realpath()的情况下安全地清理路径输入?目的是防止像../../../../../path/to/file这样的恶意输入$handle=fopen($path.'/'.$filename,'r'); 最佳答案 不确定为什么您不想使用realpath,但路径名清理是一个非常简单的概念,大致如下:如果路径是相对路径(不以/开头),则在其前面加上当前工作目录和/,使其成为绝对路径。将多个/的所有序列替换为单个(a)。将所有出现的/./替换为/。删除/.如果在末尾。将/anything/../替换为/。删除
我正在尝试清理文件名。我想知道一种从文件名中删除除最后一个以外的所有小数的方法。我需要保留最后一个,因为扩展名紧随其后。示例:abc.def.ghij-klmnop.q234.mp3这个文件应该是这样的abcdefghij-klmnopq234.mp3一些扩展名超过3个字符。 最佳答案 您可以使用具有正面前瞻性的正则表达式。像这样:$withdots='abc.def.ghij-klmnop.q234.mp3';$nodots=preg_replace('/\.(?=.*\.)/','',$withdots);执行完上述之后,$no