我可以在 PDO SELECT 期间 "unsanitize" 吗?
Can I "unsanitize" during a PDO SELECT?
我正在编写客户端和服务器代码。用户在浏览器中输入数据,发送到服务器上我的PHP代码。
我在 $_GET[]
上使用 filter_input_array
,在 "name" 字段上使用 FILTER_SANITIZE_STRING
。
O'Reilly
变成O'Reilly
,这个存入数据库
当然,下次客户端取数据显示在浏览器中时,用户就抱怨了。
当我使用 PDO SELECT
来自 MySql 数据库的数据时,有什么方法可以 "unsanitize" 吗?
在数据库中保存数据时,正确的方法是按使用的方式存储数据,即按原样存储。然后在显示的时候不需要对数据做任何操作。
您可以使用 FILTER_FLAG_NO_ENCODE_QUOTES
标志来禁用字符串中 " 或 ' 的编码。如果您只想摆脱 HTML 标签,您还可以使用 strip_tags()
函数而不是那个值。
您总是希望在查询中使用参数,因为这有助于解决 SQL 注入问题,但您是否要剥离标签、清理输入或其他内容取决于您要对数据执行的操作。所以有时你只是使用参数,有时也进行消毒。
我正在编写客户端和服务器代码。用户在浏览器中输入数据,发送到服务器上我的PHP代码。
我在 $_GET[]
上使用 filter_input_array
,在 "name" 字段上使用 FILTER_SANITIZE_STRING
。
O'Reilly
变成O'Reilly
,这个存入数据库
当然,下次客户端取数据显示在浏览器中时,用户就抱怨了。
当我使用 PDO SELECT
来自 MySql 数据库的数据时,有什么方法可以 "unsanitize" 吗?
在数据库中保存数据时,正确的方法是按使用的方式存储数据,即按原样存储。然后在显示的时候不需要对数据做任何操作。
您可以使用 FILTER_FLAG_NO_ENCODE_QUOTES
标志来禁用字符串中 " 或 ' 的编码。如果您只想摆脱 HTML 标签,您还可以使用 strip_tags()
函数而不是那个值。
您总是希望在查询中使用参数,因为这有助于解决 SQL 注入问题,但您是否要剥离标签、清理输入或其他内容取决于您要对数据执行的操作。所以有时你只是使用参数,有时也进行消毒。