为了使Web应用程序安全,要在validation.xml中过滤哪些特殊字符?
答案 0 :(得分:1)
如果你主要关心的是SQL注入,最好的防御是使用参数化查询。
不幸的是,我用于参考的唯一文章是针对iOS和objective-c,但是here's维基百科上的参数化语句条目
答案 1 :(得分:1)
从输入数据中过滤字符的原因是为了防止输入数据在不同编程或脚本环境中使用控制语句“缩小”的各种情况。
最典型的例子是SQL注入和跨站点脚本。 SQL注入的一个示例是,如果您创建这样的sql语句:
sql = "select username where username = '" + username + "' and password = '" + password + "'"
并且用户提交用户名admin'(注意')
跨站点脚本编写的一个示例是,有人使用此内容创建评论的论坛:
"Hi. This is a comment! <script> .. malicious javascript .. </script>"
还有其他几种变体。如果您发送带有用户生成输入的电子邮件,则可能会在您的代码中插入电子邮件标题。如果在操作系统命令行中使用用户生成的输入(即更改密码),也可以插入其他命令。
处理此问题的唯一安全方法是在创建sql语句,创建网页,发送电子邮件等时永远不要信任用户生成的输入。
但是,作为一种第一道防线,您可以除了过滤掉经常使用的字符,您知道用户在验证输入时不需要这些字符。一个典型的列表将包含像&lt;&gt; \;“&amp;#^'``%的字符。注意!这不是一个详尽的列表,只是我头脑中的几个典型字符。