每次从网页向数据库插入任何数据时,是否应该使用textbox.text.Trim()函数。
我只是习惯使用修剪功能?它会以任何方式影响性能吗?我应该每次还是只在需要时使用?
答案 0 :(得分:3)
我已经看到很多空格的问题,这些空格最终被添加到文本字段中(例如登录神秘地不起作用)。因此,将大多数文本字段输入修剪为标准实践根本不是一个坏主意。
我认为trim()的性能损失绝对可以忽略不计,除非是流量超高的网站。
答案 1 :(得分:1)
您应该在数据进入应用程序时(从提交的表单)修剪数据,而不是在将数据放入数据库之前。这是将数据转换为受控格式的验证步骤,而不是安全存储在数据库中的转义步骤。 (*)
您还应该删除控制字符和其他任何会导致应用程序出现问题的内容。例如,想象一下带有换行符或其中的空字节的用户名可能导致的难度(和潜在的安全问题)。典型的浏览器UI可能不允许键入这些字符,但这并不能阻止攻击者提交它们。一些表格阅读库可能会为您解决这个问题,大部分都不会。
并非所有东西都需要修剪。例如,我现在输入的大文本字段可能有正当理由在开头和/或结尾处有空格。但是对于任何与之相关的逻辑,特别是像用户名这样的东西,它值得做。
*:未修剪的空格存在一个数据库问题:许多数据库将以静默方式修剪尾随空格,并意外地将字符串与任意数量的尾随空格匹配。不要期望从数据库返回尾随空格,除非它是BLOB列,并且在使用匹配用户名之类的逻辑做任何事情之前再次修剪。
答案 2 :(得分:0)
使用trim并确保创建一个功能来消除任何潜在的sql中毒攻击。
php为您提供
mysql_real_escape_string();