[英]php, html mysql 'select * from table' interpreted as <select></select> option box
我刚刚遇到了一个奇怪的显示问题。
我有一个电子商务网站,它允许用户在描述字段中添加自由文本。 该值存储在 mysql 数据库中,稍后在描述中读出到屏幕上。
在一些测试中,我发现如果用户输入“select * from table”,它会被正确存储并返回,但 html 正在将其转换为
<span class="idesc break-word">TESTING TESTING %$#$!OIUOQI#UQO@)( <select *="" from="" table=""></select></span>
它反过来显示为一个空的选择下拉框。
我已经用了? 首先将php中的变量绑定到mysql代码:
如果以这种方式创建的字段的值被进一步向下传递到应用程序并且最终可以发送到数据库,那么您很容易受到 SQL 注入攻击。
是否有一些代码正在寻找“选择”并决定应该从中创建一个字段? 如果是,那看起来有些危险,并且该电子商务应用程序可能会在更多领域做出潜在危险的决定。
绑定是防止输入意外数据类型的一个很好的步骤,但更进一步,例如限制某些字符,例如 ;<> 也是一个好方法。 你的例子让我担心的是,你并不期待一个选择字段,而是得到了一个; 这意味着一旦被破坏,该机制可能会被进一步利用来与您的数据库进行交互。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.